Пишет сам закрывающие тэги для элементов не традиционно пустая плохая практика?

48
задан alex 24 November 2014 в 17:04
поделиться

8 ответов

Я предполагаю, что Ваш вопрос имеет отношение к красной запаздывающей наклонной черте на закрывающихся автоматически элементах при просмотре источника в Firefox. Если так, Вы споткнулись в один из самых неистовых, все же одновременно пассивных агрессивных дебатов в производителе браузера по сравнению с войнами веб-разработчика. XHTML НЕ является примерно разметкой документа. Это также о том, как документы предназначены, чтобы быть поданными по сети.

, Прежде чем я начну; я очень стараюсь не стать на сторону здесь.

спецификация XHTML 1.1 говорит, что веб-сервер должен служить XHTML с Типом контента application/xhtml+xml. Firefox выбирает те запаздывающие наклонные черты, столь же недопустимые, потому что Ваш документ вручается как текст/HTML, а не application/xhtml+xml. Возьмите эти два примера; идентичная разметка, один служила application/xhtml+xml, другой как текст/HTML.

http://alanstorm.com/testbed/xhtml-as-html.php

http://alanstorm.com/testbed/xhtml-as-xhtml.php

Firefox отмечает запаздывающую наклонную черту в метатеге как недопустимую для документа, врученного с текстом/HTML и допустимого для документа, врученного с application/xhtml+xml.

, Почему это Спорно

разработчику браузера, точка XHTML - Вы, может рассматривать Ваш документ как XML, что означает, отправляет ли кто-то Вам что-то, что это не допустимо, спецификация говорит, что Вы не должны анализировать его. Так, если документом служат application/xhtml+xml и нехорошо сформировал содержание, разработчику разрешают сказать "не мою проблему". Вы видите, что в действии здесь

http://alanstorm.com/testbed/xhtml-not-valid.php

, Когда документ вручен в качестве текста/HTML, Firefox рассматривает его как простой документ HTML и использует прощение, зафиксируйте его для Вас, анализируя стандартные программы

http://alanstorm.com/testbed/xhtml-not-valid-as-html.php

Так, к производителю браузера, XHTML служил текстом/HTML, смехотворно, потому что это никогда не рассматривает как XML механизм визуализации браузера.

набор А несколько лет назад, веб-разработчики, обращающиеся быть больше, чем обезьяны тега (Правовая оговорка: среди Меня я как одного из них), начал искать способы разработать лучшие практики, которые не сделали включенный трижды вложенные таблицы, но все еще позволили востребованный опыт проектирования. Они/Мы фиксировались на XHTML/CSS, потому что W3C сказал, что это было будущим, и единственным другим выбором был мир, где единственный поставщик (Microsoft) управлял defacto спецификацией разметки. Реальное зло, там являющееся единственный поставщик , и не так много Microsoft. Я клянусь.

Поэтому, где противоречие? Существует две проблемы с application/xhtml+xml. Первым является Internet Explorer. Существует ошибка/функция прежней версии в IE, где содержание служило application/xhtml+xml, предложит пользователю загружать документ. Если Вы пытались посетить xhtml-as-xhtml.php, упомянутый выше с IE, это вероятно, что произошло. Это означает, хотите ли Вы использовать application/xhtml+xml, Вы имеете к сниффингу браузера для IE , проверяете, Принимает заголовок, и только служите application/xhtml+xml тем браузерам, которые принимают его. Это не как тривиальное , поскольку это звучит для разбираний, и также шло вразрез с "записью однажды" принцип, что веб-разработчики боролись за.

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

Добавление еще больше бензина к проблеме является XHTML 1.0 (не 1.1), спецификация говорит, что документы XHTML могут быть поданными в качестве текста/HTML, принимая бесспорный , инструкции по совместимости сопровождаются. Вещи как тег img быть сам закрытие и т.п.. Ключевое слово здесь , может . В RFC говорит , может дополнительные средства. Firefox выбрал NOT для обработки документов, врученных с XHTML doctype, но типом контента текста/HTML как XHTML. Однако блок проверки допустимости W3C счастливо сообщит об этих документах как допустимых.

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

Продвижение

Наконец, это - то, о чем целом вещь HTML 5 . XHTML стал такой политической злободневной политической проблемой, что группа людей, которая хотела переместить язык вперед, решила войти в другое направление. Они произвели спецификацию для HTML 5. Это в настоящее время долго обсуждается в W3C и, как ожидают, закончится когда-то в следующее десятилетие. Тем временем поставщики браузера привередливо выбирают функции от происходящей спецификации и реализуют их.

Обновления из Комментариев

В комментариях, Alex указывает, что, если Вы собираетесь осуществить сниффинг для чего-то, необходимо проверить Принять заголовок, чтобы видеть, принято ли заявление агентом пользователя.

Это абсолютно корректно. В целом, если Вы собираетесь осуществить сниффинг, осуществите сниффинг для функции, не для браузера.

110
ответ дан Community 7 November 2019 в 12:07
поделиться

Да. Это. Это вызовет проблемы в определенных случаях для старых браузеров.

<script type='text/javascript' src='script.js' />

В этом случае, старый браузер не мог бы понять, что <script> тег закончился.

10
ответ дан Mehrdad Afshari 7 November 2019 в 12:07
поделиться

Служивший application/xhtml+xml, < промежуток/> средства создают элемент промежутка без содержания.

Служивший текст/HTML, < охватите/>, средства создают элемент промежутка, где содержание элемента следует за этим тегом до </span> с тегом встречаются, или другой тег (или EOF), который неявно закрывается, с элементом встречаются. т.е. в этом случае < промежуток/> означает то же как < span>.

В стороне: HTML 5 определяет обоих и HTML и сериализацию XHTML, таким образом, это не влияет на эту проблему так или иначе. Это действительно требует, как XHTML 1.1, чтобы XHTML служили application/xhtml+xml, в отличие от XHTML 1.0. В действительности, хотя, это ничего не изменяет, поскольку вся обработка браузеров любая версия XHTML служила текстом/HTML как супом тега.

3
ответ дан Alohci 7 November 2019 в 12:07
поделиться

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

<script> важный, который должен быть закрыт с </script> для предотвращения проблем.

Другой <meta>, который работает намного лучше с пауками, записанными как <meta></meta> вместо <meta />

Не точно вопрос, но связанный, с точки зрения форматирования, версии IE имеют проблемы только с пустыми элементами такой как <div></div> или <div />. В этом случае, <div>&nbsp;</div> требуется, чтобы поддерживать форматирование.

0
ответ дан Derek H 7 November 2019 в 12:07
поделиться

См. примечание по теме для рабочей группы XHMTL: http://www.w3.org/TR / xhtml-media-types /

Короче говоря, это нормально, если ваш XHTML будет рассматриваться как XHTML. Если вы собираетесь притвориться, что это HTML (что вам нужно сделать, если вы хотите, чтобы он загружался с помощью Internet Explorer (включая версию 8, самую последнюю на момент написания), тогда вам придется прыгать через обручи).

обручи настолько раздражают, что я бы рекомендовал большинству людей придерживаться HTML 4.01.

2
ответ дан 7 November 2019 в 12:07
поделиться

Дополнение к другим ответам: в IE наличие таких элементов, как в вашей разметке , вызовет всевозможные проблемы с DOM методы обхода в JavaScript . Взгляните на следующий документ XHTML:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>Test</title>
    <script type="text/javascript">
        function show() {
            var span = document.getElementById("span");
            alert(span.innerHTML);
        }
    </script>
</head>
<body onload="show();">
<p id="p1">Paragraph containing some text followed by
           an empty span<span id="span"/></p>
<p id="p2">Second paragraph just containing text</p>
</body>
</html>

Идея состоит в том, что при загрузке страницы JavaScript получит ссылку на пустой диапазон и отобразит его HTML-содержимое. Это будет пустая строка, верно? Не в IE этого не будет. В IE вы получаете все содержимое после диапазона во всем документе:

</P>
<P id=p2>Second paragraph just containing text</P>

Кроме того, второй

отображается в коллекции диапазона childNodes . Тот же самый

также находится в коллекции тела childNodes , то есть узел может фактически иметь несколько родителей . Это н'

19
ответ дан 7 November 2019 в 12:07
поделиться

Также стоит отметить, что объявление перед типом документа переводит IE в режим причуд.

2
ответ дан 7 November 2019 в 12:07
поделиться

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

1
ответ дан 7 November 2019 в 12:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: