2012-03-27 13 views
9

Ich möchte ein Skript schreiben, der erkennt, ob der Benutzer Javascript deaktiviert hat, und wenn ja, leiten Sie sie auf eine andere Seite (wir mysite.com/enablejavascript sagen)No-Javascript Detection Script + Redirect

jedoch Ich habe keine Ahnung, wo ich anfangen soll! Danke SO.

+8

Sie benötigen '' –

+1

@BrianDriscoll zu verwenden. Warum hast du ihm keine Antwort geschrieben? Es hat die meisten Upvotes! – gdoron

+0

Wenn JavaScript deaktiviert ist, wie genau würden Sie Ihr Skript ausführen? –

Antwort

4

Wie möchten Sie ein Skript schreiben, wenn Java-Script deaktiviert ist ...?

Es ist nicht möglich. Sie können eine Nachricht anzeigen, wenn JavaScript mit <noscript> deaktiviert ist.

<noscript> Tag auf MDN:

Das HTML NoScript Element() ein Abschnitt von HTML eingefügt werden, wenn ein Skript-Typ auf der Seite nicht unterstützt wird oder wenn scripting derzeit im Browser ausgeschaltet wird.

23

Gdoron erwähnte bereits noscript. Zusammen mit meta refresh¹ können Sie Benutzer umleiten, wenn JavaScript deaktiviert ist.

Eine JavaScript-Umleitung kann mit location.replace(URL) durchgeführt werden.

<head> 
    <noscript> 
    <meta http-equiv="refresh" content="0; url=http://example.com/without-js" /> 
    </noscript> 

    <script> 
    location.replace('http://example.com/with-js'); 
    </script> 
</head> 

Beispiel noscript + meta refresh: http://pastehtml.com/view/bsrxxl7cw.html

1) Beachten Sie die drawbacks Abschnitt der Wikipedia-Artikel!

Meta Refresh-Tags einige Nachteile:

  • Wenn eine Seite zu schnell umleitet (weniger als 2-3 Sekunden), bewegen sich einige Browser können bewirken, dass die Schaltfläche „Zurück“ auf der nächsten Seite mit zu Zurück zur Umleitungsseite, woraufhin die Weiterleitung erneut erfolgt. Dies ist schlecht für die Benutzerfreundlichkeit, da dies dazu führen kann, dass ein Leser auf der letzten Website "feststeckt".
  • Ein Leser kann oder möchte möglicherweise nicht auf eine andere Seite umgeleitet werden, was zu Unzufriedenheit des Benutzers oder Bedenken bezüglich der Sicherheit führen kann.
+3

+1. Ich kannte diese 'Meta-Refresh'-Sache nicht. Nett. Ich habe die Nachteile zu Ihrer Antwort hinzugefügt. Hoffe, dass Sie nichts dagegen haben – gdoron

+1

Ich habe nichts dagegen. Danke :) – kay

+0

OK Das scheint für mich gut zu funktionieren. Visual Studio behauptet jedoch, dass noscript nicht in head eingebettet werden kann und dass meta nicht in noscript eingebettet werden kann. Mein DOCTYPE ist und der HTML-Tag hat den Namespace Sind entweder von diesem Zusammenhang? – naskew

-2

Try this: Wenn Java-Skript dann eine PHP-Link angezeigt werden deaktiviert

<script type="text/javascript"> 

document.write("<button type='button' onclick='somefunction()' >Some Text</button>"); 

</script> 

<noscript> 

<?php echo "<a href='redirectfile.php'>Some Text</a>"; ?> 

</noscript> 
+0

Bitte beschreiben Sie Ihre Lösung besser, siehe: [Beantworten] (http://stackoverflow.com/questions/how-to-answer) – askmish

2

Sie sollten HTML in einem noscript Element umleiten kombinieren. Ich fand diesen JavaScript redirection Generator. Hier ist Ihr Beispielcode:

<!-- Pleace this snippet right after opening the head tag to make it work properly --> 

<!-- This code is licensed under GNU GPL v3 --> 
<!-- You are allowed to freely copy, distribute and use this code, but removing author credit is strictly prohibited --> 
<!-- Generated by http://insider.zone/tools/client-side-url-redirect-generator/ --> 

<!-- REDIRECTING STARTS --> 
<link rel="canonical" href="https://yourdomain.com/"/> 
<noscript> 
    <meta http-equiv="refresh" content="0;URL=https://yourdomain.com/"> 
</noscript> 
<!--[if lt IE 9]><script type="text/javascript">var IE_fix=true;</script><![endif]--> 
<script type="text/javascript"> 
    var url = "https://yourdomain.com/"; 
    if(typeof IE_fix != "undefined") // IE8 and lower fix to pass the http referer 
    { 
     document.write("redirecting..."); // Don't remove this line or appendChild() will fail because it is called before document.onload to make the redirect as fast as possible. Nobody will see this text, it is only a tech fix. 
     var referLink = document.createElement("a"); 
     referLink.href = url; 
     document.body.appendChild(referLink); 
     referLink.click(); 
    } 
    else { window.location.replace(url); } // All other browsers 
</script> 
<!-- Credit goes to http://insider.zone/ --> 
<!-- REDIRECTING ENDS -->