Сценарий обнаружения без JavaScript + перенаправление - PullRequest
11 голосов
/ 27 марта 2012

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

Тем не менее, я понятия не имею, с чего начать! Спасибо ТАК.

Ответы [ 4 ]

24 голосов
/ 27 марта 2012

Гдорон уже упоминал noscript. Вместе с 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 + meta refresh: http://pastehtml.com/view/bsrxxl7cw.html

1) Помните о недостатках статьи в Википедии!

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

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

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

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

<noscript> тег MDN :

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

2 голосов
/ 25 апреля 2013

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

<!-- 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 -->
0 голосов
/ 30 июня 2012

Попробуйте: если сценарий Java отключен, отобразите ссылку 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>
...