我应该使用延迟的脚本已经在底部的身体标签之前
Should I use defer on script which are already at just before the bottom body tag?
每当我把js文件放在页面底部时,这个问题总是困扰着我。如果我把所有的js文件在关闭body
标签之前的底部,那么我认为浏览器将首先下载所有的html和样式表,然后它会解析html和css,最后它会发送请求的js文件。
- 在js文件上使用
defer
已经在底部有任何区别吗? - 在正文标签渲染阻塞之前结束非延迟脚本吗?
我的另一个问题是,如果我把所有的js文件在头部和使用defer
对他们。这是否等同于将所有js文件放在底部?是否会在head
中看到延迟浏览器向服务器发出请求,然后继续下载其余的html文件,或者仅在下载所有html和css后才向服务器发出请求?
据我所知,async
相当于defer
,唯一的区别是js将在下载时执行,而不尊重文件的顺序。
- 在js文件上使用
async
,这些文件已经在底部,除了从它们执行的顺序有任何不同吗?
查看HTML 5.2脚本规范,可以看到W3C使用的这张图。
我们在这里看到的是,使用defer
在解析HTML时获取脚本,但要等到解析结束后才执行。
async
在解析的同时获取,一旦获取完成,HTML呈现将暂停以执行脚本。
由于HTML的执行是同步的,因此可以假设在</head>
之前的脚本上使用defer
几乎就像将它们放在</body>
之前一样。
然而,正如Chris Moschini所说,我不会信任defer
。我觉得这个StackOverflow的答案作为一个整体可以更好地解释defer
是如何影响加载javascript的
defer属性是一个布尔属性。
当出现时,它指定在页面完成解析时执行脚本。
注意:defer属性只适用于外部脚本(应该只在src属性存在的情况下使用)。
我发现这篇文章解释得很好:https://flaviocopes.com/javascript-async-defer/
理想情况下,最佳实践是使用
相关文章:
- 在<页眉>标签
- 将视口底部滚动到元素底部
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- HTML5页面底部棒
- iframe正在添加标签,需要删除它们
- 如何自动调整标签的高度以适应内容
- 固定位置菜单时滚动,直到它击中一个相对容器的底部
- Jquery标签插件粘贴问题
- Twitter引导程序Typeahead-Id&标签
- 将jQuery放在代码的底部
- Highcharts-如何在自定义格式化程序中获得默认的y轴标签格式化程序
- 添加文章标签时,底部的页脚
- 修复了在页面底部加载时html5标签IE8不工作的问题
- 当我点击菜单底部标签时,整个页面都向上移动
- 我应该使用延迟的脚本已经在底部的身体标签之前
- 滚动到页面底部的标签
- 同位素获胜't将自己推出标签.打开时,其他标签会被推到底部
- JavaScript在经典ASP:做