5

在阅读了关于mdndefer的属性之后

此布尔属性设置为向浏览器指示脚本将在文档被解析后执行。

看起来很好。

所以我已经对它进行 了 测试$(function () { });$(window).load(...)

<script>
$(function ()
{
  alert('1')
});
$(window).load(function ()
{
  alert('2')
});
</script>

<script defer="defer">
  alert('4');
</script>

此代码始终输出4,1,2

好的,所以现在我可以识别文档被解析的时间了。

在什么情况下我需要document.ready之前的阶段(解析时间完成)?

4

2 回答 2

4

来自MDN

不应该在没有 src 属性的脚本上使用 defer 属性

实际用途是您仍然可以在页面顶部放置脚本,并在整个页面完全解析后让浏览器加载它们,从而提高客户端的性能。

来自YSlow

DEFER 属性表示脚本不包含 document.write,并且是浏览器可以继续渲染的线索

于 2012-10-09T15:22:13.850 回答
1

查看W3 HTML 规范

async 和 defer 属性是布尔属性,指示应该如何执行脚本。如果 src 属性不存在,则不得指定 defer 和 async 属性。

因此,此属性仅对外部脚本有效。

于 2012-10-09T15:32:53.067 回答