Таким образом, я думал, что простой способ иметь дело с JavaScript, отключаемым браузером, будет следующим:
<head>
<title>JavaScript Test</title>
<noscript>
<meta http-equiv="Refresh"
content="1;url=nojs.html" />
</noscript>
</head>
И наличие nojs.html
имейте что-то как:
<p>Return to <a href="jstest.html">test</a> after enabling javascrpt.</p>
На уровне страницы катастрофического отказа.
Это не мой предпочтительный метод, но это хорошо и просто до чего-то более корректного, может быть разработан для пользователей без JavaScript.
Однако это не допустимо для помещения a <noscript>
элемент в head
раздел. Предварительные тесты работали так или иначе, конечно, но я суеверен когда дело доходит до своего кода, являющегося допустимым, плюс я не хотел бы в это на самом деле провалить полевой тест.
Так существует ли допустимый способ сделать это? Возможно, обертывание noscript
в другом элементе, как тег object? Или некоторый еще более простой путь я не думаю?
Я не уверен, почему вам нужно перенаправлять на другую страницу, а не просто показывать сообщение. Я использую JS и немного CSS, чтобы справиться с этими ситуациями. Примерно так:
<head>
....
<script type="text/javascript"> document.documentElement.className += " js"</script>
<link rel="stylesheet" type='text/css' href="css/layout.css" media="all" />
</head>
<body>
<div id="noscript">Please enable JavaScript, then refresh this page. JavaScript is required on this site</div>
<div id="wrapper">
...
</div>
</body>
Затем в layout.css
:
#wrapper { display: none } /* Hide if JS disabled */
.js #wrapper { display: block } /* Show if JS enabled */
.js #noscript { display: none } /* Hide if JS enabled */
Таким образом, класс применяется к элементу html
перед элементом страница отображается, поэтому вы не получите мерцания, поскольку содержимое, не относящееся к JS, заменяется содержимым JS.
Тег
не может быть в
, он должен быть в ]
Обычной практикой является показ сообщения вместо перенаправления, поскольку нет способа перенаправить, только если отключен javascript.
Вы можете сделать это наоборот, сделав первой страницей nojs.html, а на этой странице использовать javascript для перенаправления к основному контенту.
Если вам действительно нужен правильный способ сделать это, сделайте своей главной страницей страницу nojs.htm
и используйте JS, чтобы скрыть все контент до того, как он будет показан пользователю, и немедленно перенаправить на настоящую главную страницу с помощью javascript.
Мне нравится решение Дага. Однако, если вам понадобится перенаправление, я бы помнил, что, хотя существует спецификация и стандарт, мир веб-браузеров - это грязный, несовершенный мир. Разрешено ли что-то в спецификации или нет, не так важно, как то, работает ли это в том наборе браузеров, о котором вы заботитесь.
Просто посмотрите на исходный код любого крупного сайта... Большинство из них не будут проверены, я готов поспорить :)