答案 0 :(得分:25)
这与bugzilla中的这个条目有关:https://bugzilla.mozilla.org/show_bug.cgi?id=364315
在该条目中,AndersHolbøll建议:
在遇到引用外部文件的脚本标记时,似乎 浏览器不会尝试在脚本标记之后加载任何元素 外部脚本文件已加载。这使得网站引用了几个 或大型javascript文件,慢。
...
这里首先加载file1.js,然后依次加载file2.js。然后 img1.gif,img2.gif和file3.js将同时加载。当file3.js有 完全加载后,将加载img3.gif。有人可能会争辩说,因为js文件可能包含例如一行 “
document.write('<!--');
”,无法知道是否有任何内容 在脚本执行之前,将会显示脚本标记。但我认为内容更有可能被展示出来 不是。在这些日子里,页面引用很多很常见 外部javascript文件(ajax-libraries,统计和广告),其中 使用当前行为会导致页面加载序列化。
基本上,html解析器继续读取html文件并加载引用的链接,即使它因脚本而被阻止渲染。
它被称为“推测”,因为脚本可能会执行诸如设置“display: none
”之类的css参数或者注释掉以下html的各个部分之类的操作,并且这样做会使certian加载变得不必要......但是,在95%的用例中,大多数引用都会被加载,因此解析器通常会正确猜测。
答案 1 :(得分:3)
我认为这意味着当浏览器正常阻止时(例如对于脚本标记),它将继续解析HTML。在加载缺失的部分之前,它不会创建实际的DOM,但它将开始在后台获取脚本文件和样式表。