2010-07-27 42 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

我可以試試這個。但是我想看看是否有人知道這件事,或者先弄過它。 – 2010-07-27 11:40:40

0

你擔心太多的應用程序。或者你正在計劃一個waaay太複雜的佈局。即使如此,也不可能每個人都達到這樣的限制,而HTML並不是故意創建的。

如果瀏覽器的HTML解析器是遞歸的,它可能會因爲堆棧溢出而造成深度嵌套標記時崩潰。但是在現代系統/操作系統中,根據堆棧分配變量的大小,堆棧默認大到足以支持數百或更多級別的遞歸。

如果解析器是不是遞歸的,因爲一個極其複雜的(令人難以置信的大令人難以置信的深度嵌套)文檔時,我的下一個選擇將是一個OutOfMemoryError。

+0

並不擔心。這個想法是假設的。 – 2010-07-27 11:39:24

+1

在我的經驗中,它曾經是大型的,複雜的嵌套深度表,導致了問題。主要與佈局引擎有關,而不是解析器。 – Oded 2010-07-27 11:48:17

+0

@Oded:沒有想到它,但現在你提到它,聽起來更有可能(至少,比吹分析器更可能) – delnan 2010-07-27 12:10:50