Как использовать элемент <noscript>«право»? - PullRequest
7 голосов
/ 09 ноября 2011

Валидатор HTML, который я нашел сегодня - http://html5.validator.nu/ - говорит, что я неправильно использовал элемент <noscript>.Мой исходный код XHTML выглядит следующим образом:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<body>
<div id="head">
<noscript>
<p>JavaScript is disabled.</p>
</noscript>
...

Сообщение об ошибке от валидатора выглядит так:

Ошибка: не допускается, чтобы в качестве дочернего элемента элемента XHTML div использовался дочерний элемент элемента XHTMLконтекст.(Подавление дальнейших ошибок из этого поддерева.)

Контексты, в которых может использоваться noscript элемента:

  • В элементе head документа HTML, если нет элементов noscript предка.
  • Если в документах HTML ожидается фразовое содержимое, если нет элементов noscript предка.

Модель содержимого для элемента div:

  • Потоковое содержимое.

Теперь я перешел к документации Mozilla и попытался понять, что это значит.Я нашел некоторую информацию о категориях контента, потоковом контенте, фразеологизированном контенте, какие элементы принадлежат каждой категории (что именно означает «принадлежать») и как можно использовать элемент <noscript>.(https://developer.mozilla.org/en/HTML/Element/noscript)

Теперь я знаю это: <div> должен содержать содержимое потока. <noscript> должно присутствовать в фразе контента. Это, очевидно, не соответствует. Как я могу управлять этим? Многие элементы находятся в обоихкатегории, потоки и фразы, хотя они не кажутся несвязанными множествами, поэтому некоторые не могут решить, или я не понимаю.

Как спецификация HTML намеревается решить эту причуду?

Ответы [ 3 ]

2 голосов
/ 12 августа 2012

Вы не должны использовать валидатор HTML5 для проверки вашего документа XHTML 1.1.

В спецификации HTML5 говорится об элементе noscript :

Элемент noscript нельзя использовать в документах XML.

Так что noscript внутри div не разрешено в XHTML5, но разрешено в XHTML 1.1.

2 голосов
/ 13 ноября 2012

Вы не можете использовать «noscript» в документе XHTML / XML, потому что это отключает анализатор для содержимого «noscript», и вы не можете сделать это в XML.Синтаксический анализатор нельзя временно отключить или отключить.

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

Если вы хотите правильно использовать «noscript», вам необходимо изменить тип документа на HTML5 (рекомендуется) или HTML4 вместо XHTML.

0 голосов
/ 09 ноября 2011

Используйте официальный валидатор для проверки вашего HTML.Следующий код подтвержден для меня отлично:

<!DOCTYPE html>
<html>
  <head>
    <title>I AM YOUR DOCUMENT TITLE REPLACE ME</title>
  </head>
  <body>    
    <div id="head">
      <noscript>
        <p>JavaScript is disabled.</p>
      </noscript>
    </div>
  </body>
</html>

РЕДАКТИРОВАТЬ: Интересно, что валидатор W3C утверждает, что парсер основан на валидаторе по указанной вами ссылке.

'Загруженный документ был успешно проверен как HTML5.Это означает, что рассматриваемый ресурс идентифицировал себя как «HTML5» и что мы успешно выполнили его формальную проверку.Реализации парсера, которые мы использовали для этой проверки, основаны на validator.nu (HTML5). '

Возможно, валидатор в http://validator.nu является более старой версией. Edit edit: Нет, там тоже все хорошо.Проверено как HTML5 и XHTML 1.0 Strict.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...