在讨论这次的主题之前,我们现在看一下脚本 优化的另一个问题,就是"优化难度"。在这里我所说的"优化难度"是指优化一张页面时的修改难度。例如在前一片文章中,使用[xss_clean] 来引入脚本的话,其"优化难度"会非常的低--没有任何副作用,不用修改其它任何代码。不过它的效果似乎还不太理想,因为仅仅优化了IE下的体验,在 FireFox里却没有任何作用。 很可惜,我回想了几乎所有的优化方式,再也 没有找到优化难度如此低的做法了。对于其它的方式,我们都必须在页面的别处进行修改,优化效果越好,修改量越大。对于这些优化方式,我们就必须编写合适的 组件,将一些逻辑封装起来。这样可以在一定程度上方便使用,降低优化难度。 比较[xss_clean]与defer 那么这又何[xss_clean]或者defer有什么关系?且听我慢慢道来。 的defer属性在标准里的定义是这样的: When set, this boolean attribute provides a hint to the user agent that the script is not going to generate any document content (e.g., no "[xss_clean]" in javascript) and thus, the user agent can continue parsing and rendering. 我们当时遇到JS无法并行下载的原因就是浏 览器认为在脚本中可能会输出HTML内容。defer属性的作用就是告诉浏览器,脚本里不会输出任何信息。果然,当我们在IE里使用defer属性时,脚 本没有被阻塞,其效果和[xss_clean]一样。不过在FireFox里依旧不行,这样的实现实在让人费解。 都说FireFox标准,看来在细节上也不尽然。 那么为什么我们在之前使用了[xss_clean]而不是defer属性呢?两者效果相同,但是明显使用defer属性更加直观啊。 defer属性使用起来的确直观和方便。不过,效果真的相同吗?我们可以通过以下的例子试试看。