2012-03-27 4 views
9

Я хотел бы написать сценарий, который определяет, имеет ли пользователь отключен JavaScript, и если да, перенаправить их на другую страницу (скажем mysite.com/enablejavascript)No-Javascript Сценарий обнаружения + Перенаправление

Однако, Я не знаю, с чего начать! Спасибо, ТАК.

+8

Вы должны будете использовать ''

+1

@BrianDriscoll. Почему ты не написал ответ? у него самые высокие показатели! – gdoron

+0

Если JavaScript отключен, как именно вы могли бы запустить свой скрипт? –

ответ

4

Как вы хотите написать скрипт, когда java-script отключен ...?

Это не может быть сделано. Вы можете показать сообщение, когда javascript отключен с помощью <noscript>.

<noscript> тег на MDN:

HTML-NoScript Element() определяет раздел HTML для вставки, если тип сценария на странице не поддерживается или сценарии в настоящее время отключены в браузере.

23

Гдорон уже упоминался. Вместе с meta refresh ¹ вы можете перенаправить пользователей, если у них отключен JavaScript.

Переадресация JavaScript может быть выполнена с помощью 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> 

Пример NoScript + метаобновление: http://pastehtml.com/view/bsrxxl7cw.html

1) Разум drawbacks раздел статьи Википедии!

мета-теги Refresh имеют некоторые недостатки:

  • Если страница перенаправляет слишком быстро (менее чем за 2-3 секунды), с помощью кнопки «Назад» на следующей странице может вызвать некоторые браузеры для перемещения вернитесь на страницу перенаправления, после чего перенаправление произойдет снова. Это плохо для удобства использования, так как это может заставить читателя «застрять» на последнем веб-сайте.
  • Читатель может или не хочет, чтобы его перенаправляли на другую страницу, что может привести к неудовлетворенности пользователей или вызвать обеспокоенность по поводу безопасности.
+3

+1. не знал, что 'Meta refresh' вещь. Ницца. Я добавил недостатки к вашему ответу. Надеюсь, ты не против – gdoron

+1

Я не против. Спасибо :) – kay

+0

OK Это, похоже, отлично работает для меня. Однако Visual Studio утверждает, что noscript не может быть встроен в голову и что мета не может быть внедрена в noscript. Мой DOCTYPE: и HTML тег имеет пространство имен ли либо из них связаны? – naskew

-2

Попробуйте это: Если ява скрипт отключен, то показать ссылку 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

Пожалуйста, опишите ваше решение. [Как ответить] (http://stackoverflow.com/questions/how-to-answer) – askmish

2

Вы должны объединить HTML перенаправления в NoScript элемента. Я нашел этот генератор JavaScript redirection. Вот ваш пример кода:

<!-- 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 --> 
Смежные вопросы