首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非“文本/javascript”类型的<script>标签会在DOMContentLoaded下载时阻止它们吗?

非“文本/javascript”类型的<script>标签会在DOMContentLoaded下载时阻止它们吗?
EN

Stack Overflow用户
提问于 2012-11-20 12:32:52
回答 4查看 792关注 0票数 1

通常,外部文件javascripts会阻塞windowloadDOMContentLoaded事件,例如,如果我们有:

代码语言:javascript
复制
<script src="http://so.me/file.js"></script>

http://so.me/file.js下载并执行时,DOM呈现器会暂停工作。

现在,让我们假设代替上面的,我们有:

代码语言:javascript
复制
<script type="not-js" src="http://so.me/file.js"></script>

我知道它会下载但不会执行资源,但是当它下载时,页面渲染器会像上面那样停止吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-20 18:27:36

Ryan Fioravanti提供了一个名为“构建高性能移动Web应用程序”的talk on Google I/O 2012,他使用这种技术下载脚本,但阻止脚本执行。然后,他将通过将脚本附加到DOM来执行这些脚本。

请看他解释的部分here

他解释说,页面呈现时间变得明显更快,这是因为JavaScript没有执行并阻止了页面呈现过程。

页面呈现器是否会像上面那样停止

我的答案是否定的。也许对浏览器内部有更详细了解的人可以给你一个明确的答案。

票数 3
EN

Stack Overflow用户

发布于 2012-11-20 12:40:41

你可能会试一试,但我猜它会的。你可以用Google Analytics和Facebook Connect编写对DOM的异步脚本引用的方式来解决这个问题。

例如:

代码语言:javascript
复制
<!-- Google Analytics: change UA-XXXXX-X to be your site's ID. -->
<script>
    var _gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']];
    (function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
    g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
    s.parentNode.insertBefore(g,s)}(document,'script'));
</script>

如果你担心你的脚本引用阻塞,你可以使用同样的方法。

票数 1
EN

Stack Overflow用户

发布于 2012-11-20 13:53:12

您是否在寻找:<script defer="defer"></script>,以便脚本不会暂停加载网站的其余部分?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13466631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档