альтернатива noscript в XHTML? - PullRequest
5 голосов
/ 04 февраля 2011

В HTML я мог бы сделать:

<noscript><link href="css/stylenojs.css" rel="stylesheet" type="text/css" /></noscript>

Существует ли какой-либо совместимый способ сделать это в документах XHTML Transitional или Strict?

Ответы [ 2 ]

3 голосов
/ 04 февраля 2011

Пример, который вы приводите, недопустим как в HTML, так и в XHTML. Ни одна текущая рекомендация не позволяет включать таблицу стилей , если не включены сценарии .

В общем, вам следует избегать <noscript>. Начните с чего-то, что работает, а затем постройте его.

В этом случае вы можете написать свою таблицу стилей для клиентов, не являющихся JS, затем:

<body>
<script type="text/javascript">document.body.className += ' js';</script>

… и включает дополнительные наборы правил, специфичные для JS, включаемого с помощью:

body.js foo {
}

Кроме того, вы можете сделать что-то вроде:

<link href="css/stylenojs.css" rel="stylesheet" type="text/css" id="nojscss" />

и

var nojscss = document.getElementById('nojscss');
nojscss.parentNode.removeChild(nojscss);
1 голос
/ 16 января 2016

Текущий выбранный ответ вводит в заблуждение.

<noscript> - это HTML действительный , а также пример, приведенный в вопросе.

W3C говорит :

Элемент noscript действует только в синтаксисе HTML, он не имеет эффект в синтаксисе XHTML. Это потому, что как это работает по сути, «отключение» парсера, когда скрипты включены, так что содержимое элемента обрабатывается как чистый текст, а не как реальный элементы. XML не определяет механизм, с помощью которого это можно сделать.

Теперь, маленький грязный секрет о XHTML заключается в том, что браузеры не обрабатывают XHTML в XML, если документированное не подается в application/xhtml+xml как тип MIME.

Если ваша страница обслуживается как правильная XHTML, то решением может быть изменение doctype страницы на HTML5 и MIME-типа на text/html.

...