Тип документа XHTML не допускает элемент "стиль" в теле - PullRequest
0 голосов
/ 17 февраля 2012

У меня есть документ, использующий XHTML Transitional.В теле я использую тег <noscript> с <style type="text/css">.

Я знаю, что <style type="text/css"> разрешен только в <head>, но все же мне нужно, чтобы CSS применялся, только если JavaScript нене обнаружено.

Как решить эту проблему, все еще проходя проверку XHTML?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
  <noscript>
    <div id="section-featured-nojavascript" class="section">
      <style type="text/css">
        #featured, #section-portfolio { display:none; visibility:hidden }
      </style>
    </div>
  </noscript>
</body>

ОШИБКА при проверке с использованием W3

document type does not allow element "style" here [XHTML 1.0 Transitional]

Ответы [ 3 ]

4 голосов
/ 17 февраля 2012

Не пытайтесь использовать отдельную таблицу стилей. Используйте JS, чтобы добавить класс js к <body> (или удалить класс no-js). Затем используйте это как часть потомкового селектора в вашей основной таблице стилей.

0 голосов
/ 17 февраля 2012

Вы можете попробовать изменить файл CSS, используя JavaScript:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>What ever</title>
<link rel="stylesheet" type="text/css" href="scripting_off.css"  id="client_side_scripting"/>
<script  type="text/javascript">
document.getElementById('client_side_scripting').setAttribute('href','scripting_on.css');
</script>
</head>
<body>

</body>
</html>
0 голосов
/ 17 февраля 2012

Вы можете установить

#featured, #section-portfolio { display:none; visibility:hidden }

по умолчанию в вашем css и "отменить" его с помощью javascript?

Из w3schools: тег noscript используется для предоставления альтернативного контента пользователям, которыеотключили сценарии в своем браузере или браузер, который не поддерживает сценарии на стороне клиента.

Элемент noscript может содержать все элементы, которые вы можете найти внутри элемента body обычной HTML-страницы.

Содержимое внутри элемента будет отображаться только в том случае, если сценарии не поддерживаются или отключены в браузере пользователя.

...