Сколько вложенных тегов в HTML может быть до того, как браузер завершит работу? - PullRequest
0 голосов
/ 27 июля 2010

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

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

let n = 1

<div>

повторять div n раз до максимума (браузер не работает)

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

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

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

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

Ответы [ 3 ]

3 голосов
/ 27 июля 2010

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

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

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

0 голосов
/ 08 июня 2018

Кажется (казалось?) Некоторые проблемы с Firefox по этому поводу.

См. https://groups.google.com/forum/#!topic/mozilla.dev.platform/SUknMzK1ZAc

Частично, ограничение Firefox (ред.?) Для глубины до 200 элементов.

0 голосов
/ 27 июля 2010

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

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

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

...