Javascript [defer]属性和document.ready?

时间:2012-10-09 15:14:53

标签: javascript jquery deferred

mdn

上阅读defer属性后
  

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

看起来不错。

所以我tested反对$(function () { });$(window).load(...)

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

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

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

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

document.ready(解析时间完成的地方)之前我需要舞台的风格是什么?

2 个答案:

答案 0 :(得分:4)

来自MDN

  

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

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

来自YSlow

  

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

答案 1 :(得分:1)

查看W3 HTML spec

  

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

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