2010-03-22 18 views
25

Ich habe eine Website, die stark auf JavaScript basiert. Ich habe eine Mirror-Site erstellt, die alle JS sowie alle Elemente enthält, die JS benötigen. Was ist eine gute und einfache Möglichkeit, Benutzer auf die Mirror-Site umzuleiten, wenn Java Script nicht aktiviert ist?Wie wird umgeleitet, wenn javaScript deaktiviert ist?

Ich versuchte dies, aber es scheint nicht sehr gut:

<noscript> 
    <meta http-equiv="refresh" content="0; URL=nojs/index.php"> 
</noscript> 

Ich habe auch versucht Kopf Umleitung in den noscript-Tag zu setzen, aber das hat nicht funktioniert.

+3

Nicht versuchen, Ärgernis zu sein, aber Ihre Website sollte nicht wirklich auf JavaScript angewiesen sein. Wo ist progressive Verbesserung? – James

+0

@ J-P Alles hängt von deinem Publikum ab. Gmail muss mit Personen zusammenarbeiten, die kein Javascript haben, da Hotmail-Benutzer vorhanden sind. Google Reader verfügt jedoch über eine eher webbasierte Nutzerbasis und kann sich wahrscheinlich darauf verlassen, dass Javascript vorhanden ist. –

+0

@ J-P | Was ist, wenn es ein Spiel ist? – s84

Antwort

21

die Version der Standard der Website kein JavaScript machen. Fügen Sie ein kleines Skript hinzu, um auf die geskriptete Site umzuleiten.

Oder verlassen die Verwendung einer Umleitung vollständig und gehen mit Progressive Enhancement

+36

... so 99% der Besucher statt 1% umleiten. Semantisch stimme ich mit deinen Gefühlen überein, aber alles in allem halte ich das für keine gute Idee. –

+0

@FRKT, Hoffentlich ist die Seite Cache-fähig, so dass die Umleitung schnell genug wäre. Dies kann ein Problem mit Websites mit viel Verkehr sein, aber mit einer schnell genug Verbindung, ich denke nicht, dass dies ein großes Problem sein wird. Nur eine Möglichkeit, das herauszufinden. – strager

+5

Nun, die ideale Lösung in diesem Fall wäre die Verwendung von Progressive Enhancement anstelle von Redirect. – Matt

15

Was ist Ihre Definition von "nicht sehr gut"?

Alle meine Websites verwenden:

<noscript> 
    <meta http-equiv="refresh" content="0; url=http://www.sadtrombone.com/" /> 
</noscript> 
+10

'' ist nur innerhalb des Kopfes gültig, da Header geändert werden. '

+8

@Mikael: 1) HTML validieren 100% streng nach dem W3C-Standard ist nicht wichtig. 2) Es funktioniert auf allen gängigen Browsern. –

+0

Was ich meine ist, dass die Umleitung nicht nahtlos ist. Es geht auf die erste Seite und leitet nur nach einem Bruchteil einer Sekunde um. Deshalb ist es nicht sehr gut. – zeckdude

75
<noscript> 
    <p>This site is best viewed with Javascript. If you are unable to turn on Javascript, please use this <a href="http://sitewithoutjavascript.com">site</a>.</p> 
</noscript> 

Einige Leute absichtlich Javascript deaktiviert, und Sie können ihnen eine Chance geben wollen, um es zu aktivieren, bevor sie umgeleitet werden.

+2

Ich wünschte, ich könnte das mehr als einmal aufmotzen. –

+0

Ahhhhhhhhhhhhh! – strager

+0

Einfach noch zufriedenstellend;) – user2097217

6

Ich würde nicht clientseitige Umleitung tun, da dies für den Benutzer lästig scheinen könnte. Stattdessen würde ich <noscript> verwenden, um den Inhalt dieser JS-less-Site auf derselben Seite anzuzeigen. Es könnte mehr Arbeit sein, aber es wäre definitiv eine reibungslosere Erfahrung.

44

Mit diesem Code, den ich kam mit:

<noscript> 
    <style>html{display:none;}</style> 
    <meta http-equiv="refresh" content="0.0;url=nojs/index.php"> 
</noscript> 

Es nutzt Stil zu blockieren, was auf der Seite ist so dann werden die Menschen nichts bemerkt, bevor es umleitet. Das einzige, was mich nervt, ist, dass ich etwas besseres als Meta-Refresh will, da das auf einigen Browsern wie IE blockiert werden kann. Ein PHP-Header ist nicht wirklich eine Lösung, wie Sie es nicht in ein noscript-Tag setzen können, da es es einfach ignorieren und es sofort ausschreiben wird.

+0

Ich wünschte, ich könnte +100 dies. Ben, das ist eine tolle Antwort und fast genau das, wonach ich gesucht habe. Ich habe es ein wenig für meine Bedürfnisse geändert. Anstatt meinen HTML-Code zu verbergen, verstecke ich nur den Inhalt meiner Seite (eingeschlossen in einem Formular-Tag), so dass ich eine Nachricht für den Benutzer zwischen die Noscript-Tags einfügen kann, anstatt mich auf Meta-Refresh zu verlassen. Gute Arbeit. Deine Antwort brachte mich dahin, wo ich hin wollte. –

+0

@ChrisHolmes, danke. Schön, dass ich dir geholfen habe. –

2

Ich habe eine bessere Lösung gefunden, als den Benutzer umleiten zu müssen, da Meta-Refresh im IE deaktiviert werden kann.

Diesen im HEAD:

<style>div#body{display:none;}</style>

Setzen Sie diese im Körper:

<noscript>NO JAVASCRIPT CONTENT HERE</noscript>

<noscript><div id="body"></noscript>JAVASCRIPT CONTENT HERE<noscript></div></noscript>

So werden die Tags sind, wo sie gemeint sind Sein.

+0

das ist eine sehr clevere Problemumgehung – Fred

+1

Ich habe dies mit der neuesten Version von Chrome versucht, und es hat nicht funktioniert. Der Inhalt der "

' and '
'. – krillgar

Verwandte Themen