JS问题:为什么同样是<script>标签,硬编码的会阻塞页面内容加载,动态加载的却可以并发加载?

2012-09-03 08:55:42 +08:00
 keys
2859 次点击
所在节点    问与答
6 条回复
SAGAN
2012-09-03 09:09:45 +08:00
你硬编码时加个async="async"也能异步加载了
keys
2012-09-03 09:20:04 +08:00
@SAGAN 这几天google了很多无阻塞加载js的东西,大家都只是说了这种方法,没看到谁解释为什么浏览器的行为会不同,我是疑惑这点不是找别的方法
reorx
2012-09-03 09:32:47 +08:00
觉得楼主提出的是2个不相干的问题呢。

script 标签在大多数现代浏览器中都是并发加载的,硬编码也不例外。

script 阻塞页面内容的加载,是既定的规范。虽然没有见到过有关的说明,个人认为,是由于 javascript 的执行可能对页面的内容造成改变,因此必须等 script 标签加载完成后才能继续页面的加载。
skydiver
2012-09-03 09:38:37 +08:00
参考:高性能网站建设指南——前端工程师技能精髓 http://book.douban.com/subject/3132277/
keys
2012-09-03 09:44:46 +08:00
@reorx 我表达有误吧,我用firebug查看的时候,很奇怪为什么动态加载的script标签没有阻塞?这才是我想问的
SAGAN
2012-09-03 11:15:40 +08:00
动态加载的script默认异步.

"Script-inserted script elements now have async default to true, which can be set to false to make the scripts execute in insertion order."

http://www.w3.org/TR/html5-diff/

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/46767

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX