Является ли IE единственным веб-браузером, который требует <script></script> и ненавидит <script />? - PullRequest
1 голос
/ 12 марта 2009

Как ужасно, что после часа охоты и клевания я подумал, что мог бы с тем же успехом донести до мира ужасную правду, что единственная причина, по которой ваш JavaScript не работает в IE, - это то, что вы думали, что можете быстро справиться. на нем и используйте свой модный ярлык xHTML.

Я прочитал dtd , и я не могу найти оснований для того, чтобы IE был таким привередливым.

Ответы [ 5 ]

8 голосов
/ 12 марта 2009

Вы не используете xhtml, вы используете html, и html не поддерживает синтаксис самозакрывающегося тега xml - в html использование синтаксиса самозакрывающегося тега приведет к тому, что атрибут «/» будет помещен в элемент, не закрывающий тег.

Теперь, в зависимости от контекста тега <script>, браузеры обычно исправляют это, поэтому вы фактически полагаетесь на автокоррекцию браузеров, чтобы все работало правильно.

5 голосов
/ 12 марта 2009

Является ли IE единственным веб-браузером, который требует и ненавидит ?

Нет, все текущие браузеры ведут себя одинаково при обслуживании XHTML как text / html. Разница между браузерами существует только в том случае, если вы перехватываете IE и отправляете ему другой тип контента в другие браузеры. (Главный совет: не делайте этого. Ничего не выиграть и много странностей, которые можно укусить.)

Синтаксис пустого элемента не воспринимается браузерами HTML как нечто особенное, он только для того, чтобы зафиксировать разрывы между незамкнутыми элементами HTML и пустыми элементами XHTML. Таким образом, вы никогда не сможете использовать его в качестве «ярлыка»; пустые элементы могут использоваться только для пустых элементов, как указано в рекомендациях XHTML Приложение C .

Вы можете проверить это так же просто:

<p style="color: red" />html

Все браузеры, которые я тестировал, «html» красного цвета.

3 голосов
/ 12 марта 2009

XHTML 1 спецификация гласит:

С.3. Минимизация элементов и содержание пустых элементов

Для пустого экземпляра элемента, модель содержимого которого не является EMPTY (например, пустой заголовок или абзац), не используйте свернутую форму (например, используйте <p> </p>, а не <p />).

XHTML DTD определяет теги сценария как:

<!-- script statements, which may include CDATA sections -->

<!ELEMENT script (#PCDATA)>

Надеюсь, это поможет,

Это от: Почему не работают самозакрывающиеся теги скрипта?

2 голосов
/ 12 марта 2009

Хотя ответ, помеченный как «правильный» в связанном вопросе Эндрю Кларка, является технически правильным, другие браузеры (которые поддерживают XHTML, отправленный как application / xhtml + xml) обрабатывают все, что отправлено как text / html (даже с типом XHTML) как HTML. В случае тегов, которые не закрыты в HTML (например, <img>), анализатор (правильно) обрабатывает самозакрывающиеся теги (например, <img />) как синтаксическую ошибку и игнорирует косую черту. В случае тегов <script>, которые должны быть закрыты в HTML (text / html), анализатор просто не находит тег закрытия и обрабатывает следующее содержимое как часть сценария.

См .: http://webkit.org/blog/68/understanding-html-xml-and-xhtml/

(Или, если сервер ненадежен для вас, как и для меня, вот кеш Google: http://209.85.173.132/search?q=cache:WFDCo2hoRnAJ:webkit.org/blog/68/understanding-html-xml-and-xhtml/+script+tag+surfin-safari&hl=en&client=safari&gl=us&strip=1)

1 голос
/ 28 марта 2009

Вы не хотите постоянно тестировать эти воды, потому что вы полагаетесь на то, что браузерные кодеры заранее представляют ваше творчество.

Вы слишком сильно зависите от целевого браузера для автоматического перевода. Я все время вижу похожий код в View Source, где дополнительные «/» выделены красной линией в Firefox, но они оказываются в тех местах, где анализатор HTML разрешил это.

Поработав с поставщиком браузера, я могу вам сказать, что многие странные мелочи, которые случаются с работой, были (неохотно) добавлены, потому что ситуация требовала поддержки чего-то странного и неправильного. Каждый из этих забавных случаев добавляет вздутости, увеличивает требования к тестированию и по возможности избегается разработчиками.

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