为什么像Facebook,Disqus,Google,Twitter这样的服务告诉我们这一点
Why services like Facebook, Disqus, Google, Twitter tell us that
为什么像Facebook这样的服务喜欢按钮,Disqus评论..告诉我们将此代码添加到我们的文档中
<div id="fb-root"></div>
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/it_IT/sdk.js#xfbml=1&version=v2.5";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
而不是简单地添加这个代码是一回事?
<div id="fb-root"></div>
<script id="facebook-jssdk"src="//connect.facebook.net/it_IT/sdk.js#xfbml=1&version=v2.5"></script>
当浏览器找到 <script src="...">
标记时,它会阻止页面的进一步渲染,直到 javascript 加载(或加载失败)。显然,这不是您想要的网站,由于外部JavaScript而卡住。
Facebook给你一个代码,可以异步加载javascript,而不会干扰你的页面加载。从HTML5开始,您还具有脚本标记的"async"属性,该属性可为您提供类似的行为。 <script src="..." async></script>
您可以在本文中找到有关javascript加载的更多信息:http://www.html5rocks.com/en/tutorials/speed/script-loading/
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0]; //line 1
if (d.getElementById(id)) return;//line 2
js = d.createElement(s); js.id = id;//line 3
js.src = "//connect.facebook.net/it_IT/sdk.js#xfbml=1&version=v2.5"; //line 4
fjs.parentNode.insertBefore(js, fjs);//line 5
}(document, 'script', 'facebook-jssdk'));
</script>
只需观察第 1 行和第 5 行 - 它只是试图确保
1)Facebook的脚本应该是页面中的第一个脚本。
2)Facebook的脚本加载缓慢。也就是说,document.ready()
事件不会等待加载此脚本。
相关文章:
- 如何使用WCF服务和javascript表单post上传.doc文件
- 监视函数从服务返回不起作用,但作用域函数起作用
- 通过Magento的网络服务检索运费
- 在同一个服务工作者中处理service-worker.js有任何影响吗
- 在Highcharts中,我们可以通过任何方式在渲染图表之前获得plotWidth和plotHeight
- 为什么不'我们在javascript中使用函数参数的数据类型
- 使用angular.js问题的JavaSpringREST服务
- AngularJS-需要在index.html页面中访问来自服务的数据
- 我们如何使用css或JavaScript在i/j上更改句点(点)的颜色
- 如何在Ionic2测试版中包含Ionic.io服务
- 基于api密钥的NodeJS web服务
- 我们如何在不更改url的情况下使用锚点点击从一个页面重定向到另一个页面
- 我们可以移除/删除控制器、服务、工厂、指令等吗?
- 为什么像Facebook,Disqus,Google,Twitter这样的服务告诉我们这一点
- 我们如何模拟我们的服务来测试控制器
- 为什么我们使用web服务的web方法,而不是web表单函数
- Javascript:为什么我们的网站在终端服务会话中非常慢?
- 我们如何在通用的web应用程序中包含alljoyn的基础服务
- 使用Famo调用web服务.我们的框架
- Web 服务 - JavaScript 我们应该尽可能共享函数或创建新函数