非常教程

HTML参考手册

其他 | Miscellaneous

Optimizing your pages for speculative parsing

传统上,在浏览器中,HTML解析器已经在主线程上运行,并在</script>标记后被阻塞,直到脚本从网络中检索并执行。Firefox 4及更高版本中的HTML解析器支持对主线程进行推测性解析。在脚本被下载和执行时,它会提前解析。与Firefox 3.5和3.6中一样,HTML解析器会为流中发现的脚本,样式表和图像启动推测加载。但是,在Firefox 4及更高版本中,HTML解析器还推测性地运行HTML树构建算法。好处在于,当推测成功时,不需要重新分析已经扫描的用于脚本,样式表和图像的传入文件的部分。不利的一面是,当投机失败时,失去更多的工作。

这份文件可以帮助您避免那些使猜测失败并减缓页面加载速度的对象。

投机加载成功

只有一个规则可以使链接脚本,样式表和图像的投机加载成功:

  • 如果使用<base>元素来覆盖页面的基本URI,请将该元素放置在文档的非脚本部分中。不要通过document.write()或添加它document.createElement()

避免丢失tree builder的输出

document.write()更改树构建器状态时,推测树构建失败,使得</script>标记之后的推测状态在document.write()解析所有插入的内容时不再成立。但是,只有不寻常的用途document.write()会造成麻烦。以下是要避免的事情:

  • 不要写不平衡的树。<script>document.write("<div>");</script>不好。<script>document.write("<div></div>");</script>没问题。
  • 不要写未完成的标记。<script>document.write("<div></div");</script>不好。
  • 不要以回车完成你的编码。<script>document.write("Hello World!\r");</script>不好。<script>document.write("Hello World!\n");</script>没问题。
  • 请注意,写入平衡标签可能会导致其他标签被推断,导致写入不平衡。例如<script>document.write("<div></div>");</script>head元素内部将被解释为<script>document.write("</head><body><div></div>");</script>不平衡。
  • 不要格式化表格的一部分。<table><script>document.write("<tr><td>Hello World!</td></tr>");</script></table>不好。但是,<script>document.write("<table><tr><td>Hello World!</td></tr></table>");</script>没关系。
  • TODO:其他格式化元素内的document.write。
HTML

超文本标记语言,它通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件,通过在文本文件中添加标记符,可以告诉浏览器如何显示其中的内容(如:文字如何处理,画面如何安排,图片如何显示等)。浏览器按顺序阅读网页文件,然后根据标记符解释和显示其标记的内容,对书写出错的标记将不指出其错误,且不停止其解释执行过程,编制者只能通过显示效果来分析出错原因和出错部位。但需要注意的是,对于不同的浏览器,对同一标记符可能会有不完全相同的解释,因而可能会有不同的显示效果。