0

我今天早些时候想到了嵌套 HTML 标签以及浏览器如何呈现它们:

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

n= 1

<div>

递归 divn时间直到最大值(浏览器失败)

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

n当浏览器无法处理更多递归时会发生什么?

我认为这对于每个浏览器都会有所不同,对于移动应用程序也会有所不同。是否有网络标准,例如域名的最大 127 个字符长度?

我从来没有遇到过这个问题,但我很好奇它什么时候会发生。

4

3 回答 3

3

没有要求最大嵌套的标准,因此这将完全是特定于实现的。

很有可能在崩溃之前,浏览器会变得无法使用(速度变慢等)。

如果您非常好奇,可以对此进行基准测试 - 编写一个生成嵌套标签的应用程序并查看每个浏览器何时在您身上崩溃 :)

于 2010-07-27T11:26:02.490 回答
0

你担心太多了。或者您正在计划一个过于复杂的布局。即便如此,您也不太可能在没有刻意创建 HTML 的情况下达到这样的限制。

如果浏览器的 HTML 解析器是递归的,它可能会因为堆栈溢出而在输入深度嵌套的标签时崩溃。但是在现代系统/操作系统上,堆栈默认情况下足够大,可以支持一百或更多级别的递归,具体取决于堆栈分配变量的大小。

如果解析器不是递归的,我的下一个赌注是当给定一个极其复杂(难以置信的大难以置信的嵌套深度)文档时出现 OutOfMemoryError。

于 2010-07-27T11:32:35.220 回答
0

Firefox 似乎(似乎?)在这方面存在一些问题。

请参阅https://groups.google.com/forum/#!topic/mozilla.dev.platform/SUknMzK1ZAc

特别是,Firefox 限制(ed?)深度为 200 个元素。

于 2018-06-07T21:18:43.560 回答