2009-03-04 16 views
8

Ich würde gerne wissen, wenn jemand ihre Webseiten optimiert, um ein freundliches Verhalten zu haben, wenn der Benutzer Javascript deaktiviert hat. Gibt es Tricks, um in solchen Fällen Pseudo-Skripting-Verhalten zu bieten? Ich spreche grundlegende Dinge wie das Öffnen von Links in neuen Fenstern. Ich würde mir vorstellen, dass es immer noch viel gibt, was man ohne Javascript machen kann. In manchen Fällen könnte es nützlich sein, eine Seite mit einigen Funktionen zu haben, auf die sie zurückgreifen kann. Gibt es Praktiken?Javascript deaktiviert Best Practices?

Edit: gute Antworten so weit! Würde es den Leuten etwas ausmachen, ein paar Beispielcodes zu verwenden (komm schon, HTML ist sooo einfach!), Da ich glaube, ich habe noch keine solche Frage auf SO gesehen.

Antwort

3

Sie können < noscript> -Tag verwenden, um einen Hyperlink zu erstellen, dessen Ziel _blank ist, um ein neues Fenster zu öffnen.

Es ist auch gut für SEO, so dass Suchmaschinen wie Google und Yahoo! kann Ihre Links auf Ihren Webseiten identifizieren und crawlen.

< noscript> kann auch normale Funktion zu jenem js-disabled-Browser zur Verfügung stellen.

11

Was ich manchmal stelle ist, um die Funktionen, die Javascript benötigen, um nicht angezeigt werden, dann Javascript verwenden, um sie anzuzeigen zu machen. Auf diese Weise sehen Leute ohne Javascript keine Funktionen, die sie nicht verwenden können. Und dann alternative Funktionen in <noscript> Tags setzen.

+0

Möchten Sie mir sagen, warum Sie mich abgelehnt haben? –

4

Stackoverflow behandelt dies in einer schönen Weise. Die Seite ist komplett ohne Javascript nutzbar, man kann Fragen stellen und beantworten. Erweiterte Funktionen wie Voting funktionieren nicht.

Sie müssen einen Kompromiss zwischen der Zeit finden, die Sie ausgeben wollen, um die Website ohne Javascript nutzbar zu machen, und der Menge an Funktionen, die funktionieren müssen.

5

Für Links in einem neuen Fenster öffnen, können Sie target = „_ blank“

<a href="http://www.google.com" target="_blank">Google</a> 

Wo ich, dass wir eine Zielseite zu umgehen, verwenden (bis zu einem gewissen Grad), um sicherzustellen, sie haben Javascript aktiviert, bevor sie bekommen in die Anwendung ...

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    <head> 
    <meta http-equiv="content-type" content="text/html;charset=utf-8" /> 
    <title>Please Wait...</title> 
    </head> 
    <body> 
    <h1>Please Wait....</h1> 
    <noscript><h1>You need a JavaScript-enabled browser to use this application!</h1></noscript> 
    <script type="text/javascript"> 
     <!-- 
     location.href = "FrontPage.aspx"; 
     // --> 
    </script> 
    </body> 
</html> 

auch bin ich oft bei how powerful CSS can be erstaunt.

0

Here's a question (and another), die viele (unterschiedliche) Meinungen über das Erstellen einer Website haben, die JavaScript fehlerfrei verarbeitet.

3

Wenn Sie Javascript verwenden, um ein Fenster von einem Link zu öffnen, können Sie es transparent machen, so dass es wieder das ursprüngliche Verhalten der Verbindung fallen wird, wenn Javascript deaktiviert ist:

<a href="http://www.guffa.com" target="_blank" onclick="window.open(this.href,this.target,'width=900,height=700');return false;">Guffa</a> 

Wenn Javascript aktiviert ist , das onclick-Ereignis wird den Klick erfassen und ein Fenster öffnen, dann gibt es false von dem Ereignis zurück, so dass die Verknüpfung nicht befolgt wird. Wenn Jaspascript deaktiviert ist, wird stattdessen der Link verwendet.

+0

+1 Manche fragen vielleicht nach dem Öffnen neuer Fenster, aber Ihre Lösung ist diejenige, die ich auswähle, wenn sie gewünscht/benötigt wird. Seien Sie sich jedoch bewusst, dass der Benutzer immer noch die Kontrolle über seinen Browser hat und möglicherweise ein neues Fenster unterdrückt. Öffnen Sie stattdessen die URL in einem neuen Tab oder im selben Fenster. –

3

"Ich würde mir vorstellen, es gibt noch eine Menge, die Sie ohne Javascript tun können" - lustig, nicht so lange her, haben wir alles ohne Javascript.

Der beste Ansatz ist, was als ‚Progressive Enhancement‘ bekannt ist. Das Prinzip besteht darin, etwas zu erstellen, das ohne JavaScript funktioniert, und dann zusätzliche Verhaltensweisen zu "schichten", indem das JavaScript an die Objekte gebunden wird.Bibliotheken wie jQuery machen dies einfach, da sie CSS-Selektoren unterstützen. Auf diese Weise können Sie JS-Verhalten fast genauso anwenden, wie Sie CSS anwenden würden (OK, eine leichte Übertreibung).

Es gibt Überlegungen, darüber nachzudenken, was eine gute Grundlinie ist und wie Seiten geändert werden sollten.

Oft ist die eigentliche Mehrarbeit auf der Serverseite, wo Sie möglicherweise mehrere Anfrageverarbeitungssysteme haben müssen. Es ist ein bisschen ein großes Feld in einer kleinen Antwort anzusprechen!

Auch darüber nachzudenken, wer und warum Benutzer nicht Javascript verwenden. Here's something I wrote a while ago on the subject sollten Sie interessiert sein.

Ein Beispiel? Nehmen Sie etwas einfach, z. Sie möchten nette "Tooltips" nach Formularfeldern anzeigen, wenn der Benutzer zu ihnen mauset. Im HTML, diese (zum Beispiel) könnten als Ziffern gekennzeichnet werden:

<label for="username">User name</label><input type="text" id="username" /> 
<p>Username must be between 6-8 characters</p> 

Für nicht JS Benutzer kann die Eingabeaufforderung einfach als netten Absatz angezeigt werden. Du machst das also mit CSS. Haben Sie zusätzliches CSS für JS-Benutzer, die den Absatz standardmäßig ausblenden. Also: 2 Sätze CSS, einer überschreibt den anderen.

nicht JS:

form p { 
    margin: 10px 0 0 0; 
    border-bottom: 1px solid grey; 
} 

js:

form p { 
    position: absolute; display: none; 
    width: 180px; 
    background-image: url(nice-bubble.gif); 
    padding: 10px; 
} 

Wie Sie CSS für JS/nicht JS Situationen anzuwenden ist bei Ihnen. Es gibt zahlreiche Möglichkeiten. Persönlich möchte ich für JS im CSS codieren und habe eine noscript.css-Variante (d. H. Rückwärts arbeiten) in einem Tag. Das ist kein gültiges XHTML, aber es funktioniert gut.

Dann haben Sie ein JS, das nach den Elementen sucht und den Anzeigecode für die Tooltips verwaltet. zB:

$(document).ready(function() { 
    $('form input').focus(function() {...display paragraph...}); 
    // etc; 
}) 

Das ist Pseudo-Code, aber Sie bekommen das Bild. Was Sie am Ende haben ist 1 Satz HTML, mit 2 Präsentationen und zusätzlichen Verhaltensweisen, und keine JS in Ihrem HTML selbst verwickelt.

1

Benutzer, die JavaScript deaktivieren, können auch CSS, Java und andere "Präsentations" -Funktionen kürzen, um die Rechenleistung in einem leistungsschwächeren Browser zu sparen. (Zum Beispiel ein Web-Telefon oder ein älterer Modell-Computer.) Sie könnten dies etwas abmildern, indem Sie dem Server einfache Funktionen hinzufügen, wie sie es in den Tagen von CGI getan haben (random intro here). In diesem Fall könnte Ihr Server Nicht-JS-Benutzer auf eine GET/POST-Seitenversion umleiten. Ich würde auch die Antworten so einfach und ungeschminkt wie möglich machen, da Sie auf einen winzigen Bildschirm ausgeben könnten.

0

jQuery hilft wirklich. Sehr oft schreiben Sie mit großen JavaScript-Plugins (Tabs, Tooltips, etc ...) Ihr Markup sehr semantisch.

Beispiel: Die Tabs-Plug-In erfordert, dass Sie verankerte divs erstellen, das heißt

<a href="#Preferences">Preferences</a> 
<a href="#Tools">Tools</a> 
<div id="Preferences"> 
    blah 
</div> 
<div id="Tools"> 
    bar 
</div> 

Dies macht Sinn, semantisch und ohne die Tabs-Plug-in, können Sie einige Funktionen erhalten. Wenn Sie javascript und jquery-tabs aktiviert haben, erhalten Sie eine wirklich schöne, reichhaltige Oberfläche.

Dies ist wirklich nur progressive Verbesserung, wie einige andere bemerkt haben. Schreiben Sie semantisches Markup, verbessern Sie es mit CSS, und verbessern Sie es dann mit Javascript.Sie sollten mit etwas enden, das für alle, sogar für Luchsbenutzer, funktioniert.