我今天早些时候曾想过嵌套HTML标签以及浏览器如何呈现它们:
<html xmlns="http://www.w3.org/1999/xhtml" {or whichever html version} xml:lang="en" lang="en">
<head>
</head>
<body>
让n
= 1
<div>
将div n
次递归到最大值(浏览器失败)
</div>
</body>
</html>
当浏览器无法再处理递归时n
会是什么?
我认为每个浏览器都会有所不同,移动应用也会有所不同。是否有Web标准,例如域名最多127个字符?
我从来没有遇到过这个问题,但我很好奇。
答案 0 :(得分:3)
没有标准要求最大嵌套,因此这将完全针对具体实现。
有可能在崩溃之前,浏览器将变得无法使用(减速等)。
如果您非常好奇,可以对此进行基准测试 - 编写一个生成嵌套标签的应用程序,并查看每个浏览器何时崩溃:)
答案 1 :(得分:0)
你太担心了。或者你计划一个过于复杂的布局。即便如此,你也不太可能每次都达到这样的限制而不是刻意创建HTML。
如果浏览器的HTML解析器是递归的,那么仅在因为堆栈溢出而导致深度嵌套的标记时它可能会崩溃。但是在现代系统/操作系统上,默认情况下,堆栈足够大,可以支持一百或更多级别的递归,具体取决于堆栈分配变量的大小。
如果解析器不是递归的,那么当给出一个非常复杂的(非常大的和非常深的嵌套)文档时,我的下一个赌注就是OutOfMemoryError。
答案 2 :(得分:0)
似乎(好像?)是关于这个问题的Firefox的一些问题。
请参阅https://groups.google.com/forum/#!topic/mozilla.dev.platform/SUknMzK1ZAc
特别是,Firefox限制(编辑?)深入到200个元素。