Я хочу перенаправить пользователя на определенную страницу, если он / она отключен javascript. Я пробовал этот код:
<noscript><?php url::redirect('controller/method'); ?></noscript> // url::redirect is much like the location header
но безрезультатно…
Как мне это сделать?
Вы не можете использовать тег meta refresh, а затем удалить его с помощью Javascript, потому что браузер настроен на перенаправление при чтении тега meta refresh, и слишком поздно для JS, чтобы манипулировать им.
Единственный способ – либо сделать то, что предложил Даниэль, либо показать ссылку, когда нет Javascript:
<noscript> <a href="">Click here to continue</a> </noscript>
Или вы можете попытаться потерпеть неудачу изящно: вы планируете отключить javascript?
Поскольку заголовки уже отправлены, вам нужно будет использовать стандартную разметку HTML:
<noscript> <meta http-equiv="refresh" content="0;url=noscript.html"> </noscript>
Попытка этого как в Firefox, так и в IE кажется хорошо работать … С включенным JavaScript тег <meta>
игнорируется. Когда он отключен, браузер перенаправляется на noscript.html
.
Невозможно сделать перенаправление на основе того, отключен ли javascript. Почему бы не сделать обратное – перенаправить, если включен javascript?
<script> window.location = "..."; </script>
Добавьте это как первый элемент в вашем теле, настройте его по своему вкусу и, возможно, предложите ссылку внутри него на страницу noscript:
<div onload="return false;"> <!-- PAGE CONTENTS --> </div><noscript>JAVASCRIPT IS REQUIRED TO VIEW THIS PAGE</noscript>
Я использую более подробный метод этого (что в основном делает его похожим на модальный диалог и все красивым) на страницах, где клиент не позволяет мне использовать более совместимые средства. Я испытал в IE6 + и всех других крупных браузерах с большим успехом.