Jump to content

Проблемы из-за незакрытых тегов


SelenIT
 Share

Recommended Posts

А слабо дойти до неё с главной страницы?

Нет.

Web for All > W3C A to Z > HTML > Specifications > HTML 4.01 > Index of Elements

Вообще-то у любого уважающего себя кодера ссылка на спеку должна быть в букмарках. ;)

  • Like 1
Link to comment
Share on other sites

Забавно, давно я там на первой странице не был, однако (привык, что спеки лежат в w3.org/TR/язык, сразу это и вводил...). А сейчас попробовал и в два клика (по "Web Design and Applications", потом по "HTML & CSS") попал сюда, а там справа внизу такое... :)

Например, если ввести в "Lookup in HTML, CSS, SVG, XPath" многострадальный P (оно, кстати, подсказывает, что еще знает на эту букву), получаем буквально следующее:

HTML Element p

Attributes

content

phrasing content

description

The p element represents a paragraph.

Specification

И клик по ссылкокнопке "Спецификация" приводит к просветлению:

A p element must have a start tag.

A p element’s end tag may be omitted if the p element is immediately followed by an address, article, aside, blockquote, dir, div, dl, fieldset, footer, form, h1, h2, h3, h4, h5, h6, header, hr, menu, nav, ol, p, pre, section, table, or ul element, or if there is no more content in the parent element and the parent element is not an a element.

Link to comment
Share on other sites

A p element’s end tag may be omitted if the p element is immediately followed by an address, article, aside, blockquote, dir, div, dl, fieldset, footer, form, h1, h2, h3, h4, h5, h6, header, hr, menu, nav, ol, p, pre, section, table, or ul element, or if there is no more content in the parent element and the parent element is not an a element.

Проще было ввести обязательный закрывающий тег, чтобы не запоминать все исключения. Бестолковые исключения.

Link to comment
Share on other sites

Вот именно, что проще для кодера (как быть бедному браузеру при попытке вложить абзац в абзац, падать с ошибкой валидации или изворачиваться в узел, но строить требуемое - другой вопрос). А то многие часто HTML ругают за простоту... ;)

Link to comment
Share on other sites

HTML > Specifications > HTML 4.01 > Index of Elements
Или этого места там нет или там несколько меню с названием HTML.

Похоже, у них огромная напряжёнка с дизайнерами.

О! Нашёл поиском по странице. А не Лебедев сайт делал? Он любит такие жутко "логичные" структуры.

А как ты догадался, что нужно именно по этим меню идти?

Link to comment
Share on other sites

О! Нашёл поиском по странице. А не Лебедев сайт делал? Он любит такие жутко "логичные" структуры.

А как ты догадался, что нужно именно по этим меню идти?

Методом научного тыка. Логики в их меню я не видел и не вижу, но, скорее всего, это из-за ментальных различий. "W3C от А до Я" намекает больше на перечень каких-то данных про саму организацию, а не про ее продукт жизнедеятельности...

Link to comment
Share on other sites

  • 2 weeks later...

пример, наверное, не совсем в тему:

на xhtml столкнулся с ситуацией: нужно было сделать вывод видео в оверлее, оверлей закрывается по клику на a.close. не мудрствуя лукаво, присвоил ссылке display: block, размеры и фон, а в html:

<a class="close" />

IE меня не понял и не закрыл тег :) со всеми вытекающими

Link to comment
Share on other sites

на xhtml столкнулся с ситуацией...

IE меня не понял и не закрыл тег :)

Это давно известная проблема - IE ниже 9-го не понимает XHTML и ничего с этим не поделать (можно "скормить" ему контнт как HTML или как абстрактный XML, но и то, и другое - костыли, а не выход). А другие браузеры, что, поняли? Это был настоящий XHTML, с правильным MIME-типом?

Link to comment
Share on other sites

Это давно известная проблема - IE ниже 9-го не понимает XHTML и ничего с этим не поделать (можно "скормить" ему контнт как HTML или как абстрактный XML, но и то, и другое - костыли, а не выход). А другие браузеры, что, поняли? Это был настоящий XHTML, с правильным MIME-типом?

ммм, ой. оставался content="text/html", но opera/ff/chrome показали все, как я хотел. телепатия :)

Link to comment
Share on other sites

но opera/ff/chrome показали все, как я хотел. телепатия :)

Мистика, не иначе... Только что проверил в FF9b/Op11.5/Chr15 - ссылка "зохавала" абзацы, как и ожидалось. Там случаем новые теги HTML5 не были замешаны? Или, может, это был локальный файл с расширением .xhtml?

Буду благодарен, если действительно найдется пример, в котором этот слеш в html-теге что-то значит. По моим сведениям, при text/html он должен игнорироваться всегда...

Link to comment
Share on other sites

Буду благодарен, если действительно найдется пример, в котором этот слеш в html-теге что-то значит. По моим сведениям, при text/html он должен игнорироваться всегда...

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

Link to comment
Share on other sites

  • 4 months later...

А Гугл, тем временем, советует не закрывать (и не открывать) всё, что можно (надеюсь, что по тем же мотивам, что и я).

У них мотивы банальнее - такой код проще парсить, а значит и быстрее. Они советуют внештатным кодерам сократить им затраты на процессорное время и дисковое пространство.

Link to comment
Share on other sites

такой код проще парсить

Пардон? Почему парсить без явных тегов проще?

Хотя, имхо, если всё равно нужно парсить потенциально любую, заранее неизвестную разметку — разницы вообще быть не должно, алгоритм-то один. А дискового пространства, да, понадобится на какие-то доли процента меньше :)

Link to comment
Share on other sites

Пардон? Почему парсить без явных тегов проще?

Хотя, имхо, если всё равно нужно парсить потенциально любую, заранее неизвестную разметку — разницы вообще быть не должно, алгоритм-то один. А дискового пространства, да, понадобится на какие-то доли процента меньше :)

На их объемах это очень существенно.

Парсить проще, так как парсеры работают строго последвательно, практически посимвольно. Никаких регекспов нет.

  • Like 1
Link to comment
Share on other sites

Парсить проще, так как парсеры работают строго последвательно, практически посимвольно.

Ух ты, не задумывался о таком, а ведь это еще один реальный аргумент за незакрытие тегов! :)

Link to comment
Share on other sites

Ух ты, не задумывался о таком, а ведь это еще один реальный аргумент за незакрытие тегов! :)

При разборе контента не браузером, самое идеальное решение - конвертация HTML в XML, или, на крайний случай, в XHTML. И вот тут незакрытие вылезет боком.

Link to comment
Share on other sites

Значит, это неидеальное решение, т.к. не выдерживает проверки суровой правдой жизни...

Лично я придерживаюсь правила, что теги надо закрывать всегда (кроме тех, которые не имеют закрывающего тега)

Это продиктовано промышленной эксплуатацией кода.

  • Like 1
Link to comment
Share on other sites

Хорошо, опыт промышленной эксплуатации, предполагающий парсинг кода собственным парсером на регулярках — ОК, принято. А другие фанаты сторонники этого правила чем его аргументируют?

Аргумент про "порядок" прошу не предлагать — история топика ясно показывает, что порядка один голый факт закрытия тегов не гарантирует. Гарантирует порядок лишь понимание логики разметки. И для него, имхо, осознание, что элементы в HTML разные (по назначению, модели контента и т.п.) — только плюс, а причесывание их под одну гребенку ("нечего думать, закрывать надо!") не только не приближает к этому пониманию, а хорошо если не уводит от него...

  • Like 1
Link to comment
Share on other sites

Хорошо, опыт промышленной эксплуатации, предполагающий парсинг кода собственным парсером на регулярках — ОК, принято. А другие фанаты сторонники этого правила чем его аргументируют?

Аргумент про "порядок" прошу не предлагать — история топика ясно показывает, что порядка один голый факт закрытия тегов не гарантирует. Гарантирует порядок лишь понимание логики разметки. И для него, имхо, осознание, что элементы в HTML разные (по назначению, модели контента и т.п.) — только плюс, а причесывание их под одну гребенку ("нечего думать, закрывать надо!") не только не приближает к этому пониманию, а хорошо если не уводит от него...

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

Порядок - требуемая характеристика для минимизации ошибок.

<ul><li><table><tr><td>
Test</table></ul>

Эта строка подкупает, но требует внимательного отношения при вставке другого кода. И не факт, что получившийся результат будет совпадать с ожидаемым и не нарушать разметку.

Другими словами, написать один раз не проблема. Проблема без ошибок модифицировать код.

Link to comment
Share on other sites

Эта строка подкупает, но требует внимательного отношения при вставке другого кода. И не факт, что получившийся результат будет совпадать с ожидаемым и не нарушать разметку.

Собственно, я к тому и веду, что строка

<ul><li><table>
<tbody><tr><td><p>Test</p></td></tr>
</tbody>
</table></li></ul>

точно так же требует... и далее по тексту дословно. И видимость четкой и упорядоченной структуры — не более чем видимость. Можно "на автомате" всунуть между <p> и </p>, например, заголовок — и тоже удивиться, отчего результат не совпадает с ожидаемым. И без закрывающего </p>, возможно, догадаться о причине произошедшего будет даже проще...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share


×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy