2010-07-27 1 views
0

у меня возникла мысль ранее сегодня о вложенных HTML теги и как браузеры отображают их:Сколько вложенных тегов в HTML может иметься до того, как он выйдет из строя в браузере?

<html xmlns="http://www.w3.org/1999/xhtml" {or whichever html version} xml:lang="en" lang="en"> 
<head> 
</head> 
<body> 

пусть n = 1

<div> 

рекурсию ДИВ n раз до максимума (браузер не откажет)

</div> 
</body> 
</html> 

что будет n быть, когда браузер не сможет обработать больше рекурсии?

Я бы подумал, что это будет отличаться для каждого браузера, а также для мобильных приложений. Существует ли веб-стандарт, например длина 127 символов для доменных имен?

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

ответ

3

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

Скорее всего, перед сбоем браузер станет непригодным (замедление и т. Д.).

Если вы очень любопытны, вы можете бенчмарк это - код приложения, который генерирует вложенные теги и видеть, когда каждый браузер падает на вас :)

+0

Я могу попробовать именно это. Но я хотел узнать, знал ли кто-нибудь об этом, или первым пробежал по нему. –

0

Ты слишком много. Или вы планируете слишком сложный макет. И даже тогда очень маловероятно, что вы достигнете такого предела, с HTML, который специально не создан для этого.

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

Если синтаксический анализатор не является рекурсивным, моя следующая ставка будет представлять собой OutOfMemoryError при заданном чрезвычайно сложном (невероятно большом и невероятно глубоко вложенном) документе.

+0

не беспокойтесь. идея была гипотетической. –

+1

По моему опыту, это были большие, сложные глубоко вложенные таблицы, которые вызывали проблемы. В основном это касается механизма компоновки, а не анализатора. – Oded

+0

@Oded: Не думал об этом, но теперь вы упомянули об этом, звучит более вероятно (по крайней мере, более вероятно, чем выдувание парсера) – delnan