Допустимый способ добавить noscript в голове для обертывания перенаправления

Таким образом, я думал, что простой способ иметь дело с 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? Или некоторый еще более простой путь я не думаю?

21
задан Anthony 16 February 2010 в 03:40
поделиться

4 ответа

Я не уверен, почему вам нужно перенаправлять на другую страницу, а не просто показывать сообщение. Я использую 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.

24
ответ дан 29 November 2019 в 21:05
поделиться

Тег

Обычной практикой является показ сообщения вместо перенаправления, поскольку нет способа перенаправить, только если отключен javascript.

Вы можете сделать это наоборот, сделав первой страницей nojs.html, а на этой странице использовать javascript для перенаправления к основному контенту.

4
ответ дан 29 November 2019 в 21:05
поделиться

Если вам действительно нужен правильный способ сделать это, сделайте своей главной страницей страницу nojs.htm и используйте JS, чтобы скрыть все контент до того, как он будет показан пользователю, и немедленно перенаправить на настоящую главную страницу с помощью javascript.

0
ответ дан 29 November 2019 в 21:05
поделиться

Мне нравится решение Дага. Однако, если вам понадобится перенаправление, я бы помнил, что, хотя существует спецификация и стандарт, мир веб-браузеров - это грязный, несовершенный мир. Разрешено ли что-то в спецификации или нет, не так важно, как то, работает ли это в том наборе браузеров, о котором вы заботитесь.

Просто посмотрите на исходный код любого крупного сайта... Большинство из них не будут проверены, я готов поспорить :)

0
ответ дан 29 November 2019 в 21:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: