Best Practices für die Webentwicklung - Unterstützung von JavaScript deaktiviert

8

Was ist das Beste, wenn ein Benutzer JavaScript nicht aktiviert hat? Was ist der beste Weg, um Inhalte für diese Art von Benutzer zu liefern? Was ist der beste Weg, um eine Website von Suchmaschinen lesbar zu halten?

Ich kann mir zwei Möglichkeiten vorstellen, um das zu erreichen, aber ich weiß nicht, was besser ist (oder ob eine dritte Option besser ist):

  1. Verlassen Sie sich auf das Meta-Refresh-Tag, um Benutzer auf eine Nicht-JavaScript-Version der Site umzuleiten. Wickeln Sie das Meta-Refresh-Tag in ein Noscript-Tag, damit es von denen mit Javascript ignoriert wird.
  2. Verlassen Sie sich auf ein iframe-Tag, das sich im body-Tag befindet, um eine Nicht-JavaScript-Version der Site zu liefern. Wickeln Sie das iframe-Tag in ein noscript-Tag, damit es von denen mit JavaScript ignoriert wird.

Ich würde auch hochkarätige Beispiele für die richtige oder falsche Vorgehensweise zu schätzen wissen.

--------- ZUSATZ ZUR FRAGE -----------

Hier ist ein Beispiel für das, was ich in der Vergangenheit getan habe: Ссылка

Ich möchte sicherstellen, dass es dafür keine besseren Möglichkeiten gibt.

    
Teddy 21.03.2011, 12:39
quelle

7 Antworten

4

Du sprichst von graziöser Degradierung: Entwerfe und baue die Seite so, dass sie mit JavaScript funktioniert, dann mache die Seite immer noch mit deaktiviertem Javascript. Am einfachsten ist es, das html "noscript" -Tag irgendwo in der Nähe des oberen Randes Ihrer Seite einzufügen, das eine Nachricht enthält, die besagt, dass die Seite Javascript benötigt oder die Dinge nicht richtig funktionieren. SO ist ein perfektes Beispiel dafür. Die meisten Schaltflächen am oberen Bildschirmrand laufen über Javascript. Schalte es aus und du bekommst ein schönes rotes Banner und die Drop-Down-JS-Effekte sind weg.

Ich bevorzuge progressive Enhancement-Entwicklung. Lass die Seite in ihrer Gesamtheit ohne Javascript / flash / css3 / was auch immer arbeiten, dann verbessere sie Stück für Stück (schließe immer noch das noscript-Tag ein), um die Benutzererfahrung zu verbessern. Dies stellt sicher, dass Sie eine voll funktionsfähige, lesbare Website haben, unabhängig davon, ob Sie ein Benutzer mit einem Bildschirmleseprogramm oder einer Suchmaschine sind, der eine Behinderung darstellt, und gleichzeitig Benutzern mit neueren Browsern eine gute Benutzererfahrung bietet.

Unterste Zeile: Für jeden dynamisch generierten Inhalt (zum Beispiel Seitenelemente, die über AJAX generiert werden) muss eine statische Seitenalternative vorhanden sein, in der dieser Inhalt über einen Standardlink verfügbar sein muss. Wenn Sie Javascript für Tabbed Content verwenden, zeigen Sie den gesamten Inhalt auf eine Weise an, die mit dem Rest der Webseite übereinstimmt.

Ein Beispiel ist Ссылка Deaktivieren Sie Javascript und Sie haben eine ganze Seite mit geschriebenen Inhalten, Bildern, Links usw. Schalten Sie JavaScript ein und Sie erhalten Scroll-Nachrichten, Tabbed Content, Bildlauf und so weiter.

Ich werde unartig sein und Links zu Wikipedia posten:

Progressive Enhancement

Anmutige Degredation

    
Richard Parnaby-King 21.03.2011, 12:51
quelle
1

Sie haben eine andere Option, laden Sie einfach die gleiche Seite, aber machen Sie es für Noscript-Benutzer (progressive Verbesserung / gradeful Degradation).

Ein einfaches Beispiel: Sie möchten Inhalt in ein div mit ajax laden, ein <a> -Tag auf die gesamte Seite mit dem neuen Inhalt verlinken (noscript-Verhalten) und das <a> -Tag mit jQuery binden, um Klicks abzufangen und mit ajax zu laden (Skriptverhalten) .

%Vor%     
Guillaume86 21.03.2011 12:49
quelle
1

Ich bin mir nicht ganz sicher, ob Progressive Enhancement heutzutage als Best Practice gilt, aber es ist der Ansatz, den ich persönlich bevorzuge. In diesem Fall schreiben Sie Ihren serverseitigen Code so, dass er wie eine standardmäßige Web 1.0-Web-App (ohne JavaScript) funktioniert, um mindestens so viele Funktionen bereitzustellen, dass das System ohne JavaScript funktioniert. Sie beginnen dann mit der Überlagerung von JavaScript-Funktionen, um das System benutzerfreundlicher zu gestalten. Wenn Sie es richtig gemacht haben, sollten Sie mit einer Web-App enden, die zumindest genug Funktionalität bietet, um für Nicht-JavaScript-Benutzer nützlich zu sein.

Ein verwandter Prozess ist als Graceful Degradation bekannt, der auf ähnliche Weise funktioniert, aber mit der Annahme beginnt, dass ein Benutzer JavaScript aktiviert hat und in Fällen, in denen er / sie nicht funktioniert, Workarounds einbaut. Dies hat jedoch den Nachteil, dass Sie, wenn Sie etwas übersehen, einen Benutzer ohne JavaScript zurücklassen können.

Progressive Enhancement-Beispiel für eine Suchseite: Erstellen Sie Ihre Suchseite so, dass sie normalerweise nur eine HTML-Seite von Suchergebnissen zurückgibt, aber auch ein Flag, das über GET gesetzt werden kann. Wenn gesetzt, gibt es stattdessen XML oder JSON zurück. Fügen Sie auf der Suchseite ein Skript ein, das eine AJAX-Anfrage an die Suchseite sendet, wobei das Flag an die Abfragezeichenfolge angehängt wird. Anschließend wird der Hauptinhalt der Seite durch das Ergebnis des AJAX-Aufrufs ersetzt. JavaScript-Benutzer erhalten den Vorteil von AJAX, aber diejenigen ohne JavaScript erhalten immer noch eine praktikable Suchseite.

Ссылка

    
GordonM 21.03.2011 12:50
quelle
1

Wenn Ihre Anwendung Javascript verwenden muss, können Sie nichts tun, außer ihnen eine höfliche Nachricht in einem noscript-Tag anzuzeigen.

Andernfalls sollten Sie anders herum denken.

  1. Erstellen Sie Ihre Site ohne JS
  2. Geben Sie eine fantastische Benutzererfahrung und machen Sie sie vollständig funktional
  3. Fügen Sie JS hinzu und machen Sie das UX noch funktionaler. Lege den JS oben drauf.

Wenn der Benutzer nicht über JS verfügt, wird Ihre Site dennoch zu Schritt 2 Ihres Standorts zurückkehren.

Wie zum Crawlen. Wenn Ihre Website von AJAX und einer Menge JS abhängig ist, können Sie gogole darauf aufmerksam machen: Ссылка

    
JohnP 21.03.2011 12:51
quelle
1

Ein kurzer Tipp, der Ihnen helfen kann: Installieren Sie einfach lynx, einen Befehlszeilen-Webbrowser, und Sie werden sofort sehen, wie Google und andere Ihre Website sehen (und auch blinde Menschen). Dies ist sehr nützlich. Natürlich sind in einem Befehlszeilenfenster keine Grafiken und JavaScript deaktiviert.

    
Olivier Pons 21.03.2011 13:16
quelle
1

Wenn Sie "ernsthafte" Ajax (z. B. Client-Side-Routing) tun, könnte die folgende Technik nützlich sein:

  1. Benutze URLs ohne GET / "?" - Parameter (es erleichtert dir später das Leben)
  2. Verwenden Sie Ссылка für das clientseitige Routing
  3. Implementieren Sie das Rendern einer HTML-Version Ihrer Site, die kein Skript ist (HTML-Snapshot wird von Google so genannt) in Ссылка
  4. Wickeln Sie den gesamten Inhalt Ihres HTML-Snapshots in noscript-Tags und leiten Sie ihn über top.location.href zur Vollversion der Site
  5. weiter
  6. Handle Ссылка - es sollte über 301-response auf Ссылка
  7. Verwenden Sie a-tags nur für GET-Links, benutzen Sie Formulare für POST / PUT / DELETE-Links - stylen Sie sie bei Bedarf einfach aus

Ein schöner Beispielcode für Links, die ich bei der Suche nach "Wie schreibe ich richtigen Ajax-Code" gefunden habe:

%Vor%

Dies ist natürlich eine ziemlich komplexe Lösung, aber es sollte sowohl SEO (einschließlich Suchmaschinen-Crawler) als auch Barrierefreiheit ermöglichen. Das Problem ist, dass Sie in der Lage sein müssen, Ihren Seitenserver - AND Client-Seite zu rendern.

Eine Lösung könnte darin bestehen, ein Template-Framework wie einen Schnurrbart zu verwenden, in dem Implementierungen für verschiedene Plattformen existieren.

  1. Verwenden Sie etwas wie {{#pagelet}} / path / to / partial {{pagelet}} für dynamische Teile Ihrer Seite - Beispiel: {{#pagelet}} / image / {{image_id}} / preview { {/ pagelet}}
  2. In Ihrem clientseitigen Rendering wird Pagelet so implementiert, dass es dynamisch durch etwas ersetzt wird, das über Ajax geladen wurde (zum Beispiel: render)
  3. In Ihrem serverseitigen Rendering würde das Pagelet nur direkt gerendert werden (im Zweifelsfall nur das Pagelet curlen und es sofort rendern) oder wenn Sie den Code asynchron schreiben können, tun Sie es genauso wie Sie es clientseitig tun würden: schreiben Sie etwas temporäre Spanne in einen Puffer, starten Sie das Holen aller Pagelets, ersetzen Sie die temporären Spannen, sobald die Pagelets ankommen, und spülen Sie den Puffer, sobald alle Pagelets gerendert wurden.

Das ist das beste allgemeine Design, das ich bisher gefunden habe. Sie können eine Deep-Link-Funktion in Ihre App integrieren, die für Suchmaschinen geeignet ist und Sie dazu zwingen sollte, eine Seite zu erstellen, die sich leicht verschlechtert.

P.S .: Ein Vorteil der oben beschriebenen Techniken ist, dass sowohl das Ajax- als auch das "Web 1.0" -Rendering von Memcached-Caching ganzer Pagelets profitieren kann.

    
Jan Olaf Krems 24.10.2011 22:48
quelle
0

Ich würde es vorziehen, die Seite ohne Javascript zu kodieren und wenn JavaScript aktiviert ist, leiten wir Benutzer auf eine ähnliche Seite mit Javascript weiter. (dasselbe Konzept wie progressive Erweiterung)

Weiterleitung mit JavaScript

    
rtyusolf 30.12.2013 08:14
quelle

Tags und Links