Почему конечные теги иногда требуются, а иногда нет? - PullRequest
10 голосов
/ 13 июня 2011

Почему некоторые теги открытия / начала html требуют тега закрытия / окончания?

, например, <script> требует a </script>, тогда как <img> может(фактически должен ) быть самозакрывающимся (<img src="path.jpg" />)?

Я бы предположил, что это связано с требованием содержимого между начальным и конечным тегами, но спример <script>, <script src="file.js"></script> ничего не нужно между ...

Я спрашиваю, потому что я потратил время, пытаясь выяснить, почему мой включенный скрипт работал в Safari, а не в FF или Chrome.это потому, что я неправильно закрыл тег сценария.BLEH.

Ответы [ 2 ]

4 голосов
/ 13 июня 2011

Это действительно допустимые HTML4 и HTML5, в которых опущено большое количество конечных тегов (но не XHTML) Вот целый список: http://www.w3.org/TR/html5/syntax.html#optional-tags

Кроме того, есть несколько пустых элементов, которые просто не могут иметь никакого содержимого (например, img). Вот список тех: http://www.w3.org/TR/html5/syntax.html#void-elements

Что касается тегов скрипта, то здесь есть хорошее обсуждение переполнения стека: Почему не работают самозакрывающиеся теги скрипта?

4 голосов
/ 13 июня 2011

Причина существования самозакрывающихся тегов состоит в том, что некоторые элементы, естественно, никогда не будут иметь контент, который идет между тегами. Например, подумайте о теге <br /. Когда что-то вроде <br></br> будет полезно? Это просто пустая трата пространства и времени для персонажей. Этот синтаксис происходит от синтаксиса XML и стал частью XHTML.

Определение того, какие теги могут / должны быть автоматически закрыты, находится в HTML-парсере в браузере. Спецификация HTML для версии, которую вы используете, должна определять способ обработки вещей, но, конечно, мы все знаем, что это не всегда так.

Вот отличная статья о самозакрывающихся тегах в HTML5 (и прошлых версиях) для справки.

http://tiffanybbrown.com/2011/03/23/html5-does-not-allow-self-closing-tags/

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