“不”字;text/javascript“;类型';d<;脚本>;标签阻止下载时加载的DOMContentLoaded?
通常,外部文件javascripts会阻止“不”字;text/javascript“;类型';d<;脚本>;标签阻止下载时加载的DOMContentLoaded?,javascript,html,performance,script-tag,head.js,Javascript,Html,Performance,Script Tag,Head.js,通常,外部文件javascripts会阻止窗口加载和DOMContentLoaded事件,例如,如果我们有: <script src="http://so.me/file.js"></script> 我知道它会下载但不会执行资源,但在下载时,页面渲染器是否会像上面那样停止?您可以尝试一下,但我猜它会。您可以通过与Google Analytics和Facebook Connect编写对DOM的异步脚本引用相同的方式来解决这个问题 例如: <!-- Google An
窗口加载和DOMContentLoaded
事件,例如,如果我们有:
<script src="http://so.me/file.js"></script>
我知道它会下载但不会执行资源,但在下载时,页面渲染器是否会像上面那样停止?您可以尝试一下,但我猜它会。您可以通过与Google Analytics和Facebook Connect编写对DOM的异步脚本引用相同的方式来解决这个问题
例如:
<!-- 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>
var_gaq=[[''u setAccount','UA-XXXXX-X'],[''u trackPageview'];
(函数(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)}(文档,'script');
如果您担心脚本引用阻塞,可以使用相同的方法。您可以尝试一下,但我猜会的。您可以通过与Google Analytics和Facebook Connect编写对DOM的异步脚本引用相同的方式来解决这个问题
例如:
<!-- 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>
var_gaq=[[''u setAccount','UA-XXXXX-X'],[''u trackPageview'];
(函数(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)}(文档,'script');
如果您担心脚本引用被阻塞,您可以使用相同的方法。您在寻找:这样脚本就不会暂停加载网站的其余部分?您在寻找:这样脚本就不会暂停加载网站的其余部分吗?Ryan Fioravanti发了一封邮件他称之为构建高性能移动Web应用程序,在这里他使用了这种精确的技术来下载脚本,但阻止它们被执行。然后,他将通过将脚本附加到DOM
来执行脚本
看他解释的部分
他解释说,页面呈现时间明显加快,这是因为JavaScript没有执行并阻止页面呈现过程
页面渲染器是否会如上所述停止
我的答案是否定的。也许有人对浏览器内部结构有更详细的了解,可以给你一个明确的答案。Ryan Fioravanti有一个名为“构建高性能移动Web应用程序”的建议,他使用这种技术下载脚本,但阻止脚本被执行。然后,他将通过将脚本附加到DOM
来执行脚本
看他解释的部分
他解释说,页面呈现时间明显加快,这是因为JavaScript没有执行并阻止页面呈现过程
页面渲染器是否会如上所述停止
我的答案是否定的。也许有人对浏览器内部结构有更详细的了解,可以给你一个明确的答案。内核的解决方案可能就是你想要的
您可以使用
或
- 延迟:并行加载并按顺序执行
- 几乎所有浏览器都支持,包括IE的旧版本。然而,执行顺序并不总是得到遵守,即使它应该得到遵守
- 异步:并行加载并尽快执行
- 除IE外,几乎所有浏览器都支持IE,IE仅在IE10中添加了对IE的支持
Landon的解决方案与使用async
的解决方案相同,只是您通过编程控制事情
…也就是说,几乎所有的现代浏览器都默认使用defer方法,不管您是否指定了某些内容。尝试在FF或Chrome中以经典方式加载一组脚本,同时查看其开发工具(或Fiddler)中的瀑布图,您将看到它们并行加载所有脚本,即使您没有要求它们:)
完善的解决方案(应适用于任何浏览器):
window.onload=函数(){
var s=document.createElement(“脚本”);
s、 type=“text/javascript”;
s、 src=”http://so.me/file.js";
document.getElementsByTagName(“head”)[0]。appendChild;
}
然后,如果您愿意这样做,您也可以将脚本粘贴在文档末尾的
之前
任何你在
或
之前坚持的内容都会导致渲染停止,但这并不意味着这是一个问题。页面是从上到下呈现的。因此,一旦你进入
,即使onload
尚未启动,最终用户已经可以看到您的页面了。内核的解决方案可能就是您想要的
您可以使用
或
- 延迟:并行加载并按顺序执行
- 几乎所有浏览器都支持,包括IE的旧版本。然而,执行顺序并不总是得到遵守,即使它应该得到遵守
- 异步:并行加载并尽快执行
- 除IE外,几乎所有浏览器都支持IE,IE仅在IE10中添加了对IE的支持
Landon的解决方案与使用async
的解决方案相同,只是您通过编程控制事情
…也就是说,几乎所有的现代浏览器都默认使用defer方法,不管您是否指定了某些内容。尝试在FF或Chrome中以经典方式加载一组脚本,同时查看其开发工具(或Fiddler)中的瀑布图,您将看到它们并行加载所有脚本,即使您没有要求它们:)
精制梭罗
<html>
<head></head>
<body>
<script>
window.onload = function() {
var s = document.createElement("script");
s.type = "text/javascript";
s.src = "http://so.me/file.js";
document.getElementsByTagName("head")[0].appendChild(s);
}
</script>
</body>
</html>