Почему мой документ не соответствует XHTML 1.1 STRICT?
-
19-09-2019 - |
Вопрос
Хотя target="_blank" устарел, почему валидатор W3C не выдает об этом ошибку?Вы можете вставить и проверить этот код в валидатор:
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<p>
<a href="http://www.stackoverflow.com" title="New window will open" target="_blank">Link opens in new window</a>
</p>
</body>
</html>
Редактировать:
Означает ли это, что XHTML 1.1 поддерживает target="_blank", а XHTML 1.0 strict - нет?Или это ошибка в валидаторе W3C?
Решение
Вы проходите проверку как XHTML Переходный скорее, чем Строгий.Если вы вручную переопределите тип документа на XHTML 1.0 Strict, вы получите следующую ошибку:
Строка ошибки 11, столбец 76:Атрибут «цель» существует, но не может быть использован для этого элемента.
…om" title="Откроется новое окно" target="_blank">Ссылка откроется в новом окне
Используйте этот тип документа, если хотите быть строгим:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Переходные схемы по-прежнему допускают использование некоторых устаревших элементов и атрибутов, я думаю, чтобы помочь людям. переход в шагах к более строгой разметке.
РЕДАКТИРОВАТЬ:
Итак, исходный код был XHTML 1.1, у которого есть только одна версия (без строгого/переходного), и в соответствии этот FAQ целевой атрибут действительно не разрешен.Я думаю, это ошибка в валидаторе.
Другие советы
Он устарел, но не удален.Вот почему я думаю, что существует проблема с проверкой этого.
А Документация XHTML1.1 показывает, что целевой атрибут a
элементом может быть «что угодно».
Означает ли это, что XHTML 1.1 поддерживает target=”_blank”, а XHTML 1.0 strict — нет?
Ну да.
Если вам нужен обходной путь для вашей проблемы, то это один из них.Другой вариант — использовать window.open() вместо target="_blank".
Я использовал ваш код и получил следующую ошибку.
Обнаружена ошибка при проверке этого документа как XHTML 1.1!
Результат проверки:1 ошибка
Строка ошибки 11, столбец 76:нет атрибута «цель»
….com" title="Откроется новое окно" target="_blank">Ссылка откроется в новом окне
Валидатор работает по состоянию на 30.01.2012.Вы не можете пройти проверку, используя target="_blank"
Замените этой допустимой частью кода:
onclick="target='_blank';"
Хотя xhtml может поддерживать «targrt="_blank», он НЕ БУДЕТ проверять его, поскольку он устарел.Если вы не хотите использовать JS, вам придется использовать переходный вместо строгого в своем «типе документа».