HTML中两种JS实现之间的差异
Differences between two kinds of JS implementation in HTML
HTML文件中这两种JavaScript实现之间有什么区别?
-
<script src="foo.js" type="text/javascript"></script>
-
正如谷歌分析程序所做的那样:
(function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();
浏览器加载/呈现HTML页面的方式是否存在任何差异,或者缓存此类JS脚本的连接是否存在一些差异?
您的第一个脚本标记强制浏览器同步拉入该文件;换句话说,在继续渲染页面之前,浏览器将停止所有其他活动来下载、解析和执行脚本。
在第二种情况下(您的谷歌内容),将动态创建一个脚本元素,并异步加载该文件。
第一个标签是阻塞的,第二个不是。
关于async
:的更多信息
- https://developer.mozilla.org/en-US/docs/HTML/Element/Script
更多关于"阻止"脚本的影响:
- http://developer.yahoo.com/performance/rules.html
摘要:如果脚本被阻塞,就把它们放在页面的底部。
一般来说,没有。
在这种特定情况下:Google使用不同的主机名来提供来自的SSL版本。
如果您在HTTP和HTTPS版本中使用相同的主机名,您可以只使用:
<script src="//example.com/ga.js" async></script>
…同样的效果。
请注意添加了async
属性,它在Google版本(2)中,但不是您的(1)。
相关文章:
- HTML中两种JS实现之间的差异
- 如何在three.js中实现不同相机/场景之间的交叉渐变
- 如何在Ionic Framework中实现选项卡页面之间的转换
- 无法在 JS 树和 JQ 网格行之间实现拖放
- 如何在AngularJS中实现控制器之间的通信
- Javascript 实现差异(以 2 个日期之间的天数为单位)
- 这两种实现之间有什么区别
- 尝试实现 ng-repeate 和表单之间的双向绑定
- 如何使用箭头键实现之间的导航
- 如何在javascript中实现对象之间的引用
- 如何设置AngularJS项目以在使用不同的服务实现之间进行交替
- 注意到JSON.stringify的不同实现之间有一个奇怪的差异
- 有没有一种方法可以使用lightbox2实现图像之间更平滑的过渡?
- 承诺的两种实现之间的差异
- 如何实现两个表之间的拖放,与所有的内容
- 在页面跳转之间实现sessionStorage
- 如何实现一个AngularJS滑块,其中3个滑块在一个可分发值之间共享
- 如何在 JavaScript 中实现异步函数之间的依赖关系
- 实现HighCharts和服务器之间的通信R
- 如何在JavaScript和Scala之间实现实时通信