2012-03-27 14 views
9

Chciałbym napisać skrypt, który wykrywa, czy użytkownik ma wyłączony javascript, a jeśli tak, przekierowywać je do innej strony (powiedzmy mysite.com/enablejavascript)No-Script + Detection JavaScript Przekierowanie

jednak Nie mam pojęcia, od czego zacząć! Dziękuję.

+8

Musisz użyć '' –

+1

@BrianDriscoll. Dlaczego nie napisałeś tego jako odpowiedzi? ma najbardziej upvotes! – gdoron

+0

Jeśli JavaScript jest wyłączony, jak dokładnie zostałby uruchomiony skrypt? –

Odpowiedz

4

Jak chcesz napisać skrypt po wyłączeniu skryptu java ...?

Nie da się tego zrobić. Możesz wyświetlić komunikat, gdy javascript jest wyłączony z <noscript>.

<noscript> tag na MDN:

HTML NoScript element() definiuje odcinek html do wstawienia jeśli typ skryptu na stronie jest obsługiwany czy skryptów jest obecnie wyłączona w przeglądarce.

23

Gdoron już wspomniał o noscript. Razem z meta refresh ¹ możesz przekierowywać użytkowników, jeśli mają wyłączoną obsługę JavaScript.

Przekierowanie JavaScript można wykonać za pomocą location.replace(URL).

<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> 

Przykład noscript + meta odświeżania: http://pastehtml.com/view/bsrxxl7cw.html

1) Pilnuj sekcję drawbacks z artykułu z Wikipedii!

Metatagi odświeżania mają pewne wady:

  • Jeśli strona przekierowuje zbyt szybko (mniej niż 2-3 sekund), korzystając z przycisku „Wstecz” na następnej stronie może powodować pewne przeglądarek przenieść powrót do strony przekierowującej, po czym przekierowanie nastąpi ponownie. Jest to szkodliwe dla użyteczności, ponieważ może to spowodować, że czytelnik "utknie" na ostatniej stronie.
  • Czytelnik może, ale nie musi, zostać przekierowany na inną stronę, co może prowadzić do niezadowolenia użytkownika lub wzbudzić obawy o bezpieczeństwo.
+3

+1. nie wiedziałem o tym "Meta odświeżania". Miły. Dodałem wady do twojej odpowiedzi. Mam nadzieję, że nie masz nic przeciwko. – gdoron

+1

Nie mam nic przeciwko. Dzięki :) – kay

+0

OK To wydaje się działać dobrze dla mnie. Jednak Visual Studio twierdzi, że noscript nie może być osadzony w nagłówku i że meta nie może być osadzona w nosokumencie. Mój DOCTYPE to i znacznik html ma nazw albo są z nich powiązane? – naskew

-2

Spróbuj tego: Jeśli skrypt Java jest wyłączony następnie wyświetlić link php

<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

Proszę opisać w sposób bardziej szczegółowy swoje rozwiązanie. Patrz: [How to Answer] (http://stackoverflow.com/questions/how-to-answer) – askmish

2

Należy połączyć HTML przekierowanie w noscript elementu. Znalazłem ten generator JavaScript redirection. Oto przykładowy kod:

<!-- 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 --> 
Powiązane problemy