JS文件在哪里,这个Async是调用JS的最快方法吗?
我猜他们然后在.JS中有PHP调用来更新广告统计数据
代码:
<script type="text/javascript">
(function(){
var acc = "acc_230d269_pub";
var st = "nocss";
var or = "h";
var e = document.getElementsByTagName("script")[0];
var d = document.createElement("script");
d.src = ('https:' == document.location.protocol ?'https://' : 'http://')+"engine.influads.com/show/"+or+"/"+st+"/"+acc;
d.type = "text/javascript";
d.async = true;
d.defer = true;
e.parentNode.insertBefore(d,e);
})();
</script>
答案 0 :(得分:2)
它使用动态构造的文件名插入脚本标记,并将其放在第一个脚本标记之前的文档中。这种方法的优点是它只在文档加载时运行,因此不会阻止文档加载。这样,用户将不会遇到(或更少)延迟。对分析工具执行此操作是一种很好的做法,因为它们不会为用户添加功能,您只想跟踪他们的操作。如果错过这些测量中的一个或两个并不重要。
答案 1 :(得分:2)
我的代码更加readable:
1 <script type="text/javascript">
2 (function () {
3 var acc = "acc_230d269_pub";
4 var st = "nocss";
5 var or = "h";
6 var e = document.getElementsByTagName("script")[0];
7 var d = document.createElement("script");
8 d.src = ('https:' == document.location.protocol ? 'https://' : 'http://') +
9 "engine.influads.com/show/" + or + "/" + st + "/" + acc;
10 d.type = "text/javascript";
11 d.async = true;
12 d.defer = true;
13 e.parentNode.insertBefore(d, e);
14 })();
15 </script>
acc
看起来像是广告客户的标识符st = "nocss"
和or = "h"
看起来像调整外观的设置<script>
标记。 async
=加载脚本不会阻止文档的执行。 defer=true
阻止脚本不被执行(可以省略)省略了所请求文件的扩展名。可以使用服务器配置的application/javascript
MIME类型来提供此文件。
答案 2 :(得分:1)
有几种方法可以将js代码包含到html中,一种是将代码直接放入标记中,就像你对所发布代码的想法一样,另一种方法是使用以下语法:
<script type="text/javascript" src="path/to/external_file.js"></script>
作为旁注,您发布的代码使用了一种技术,通过将代码放入,可以防止js名称间距冲突
(function() ...)();
阻止,我认为这是一种非常好的做法。
关于在标记中使用async的问题,您可能想看看这个: http://davidwalsh.name/html5-async
答案 3 :(得分:1)
大多数代码用于以不同浏览器的方式异步加载JavaScript代码。有关其工作原理的说明如下:http://friendlybit.com/js/lazy-loading-asyncronous-javascript/
异步加载意味着浏览器不会等待它完成。因此广告的加载速度不会更快,但页面的其余部分也会加载。
如果您将字符串拼凑在一起,您会发现他们正在加载的JavaScript文件是:http://engine.influads.com/show/h/nocss/acc_230d269_pub
答案 4 :(得分:0)
我看到的好处是:
http
或https
我想知道为什么js源不会以.js
扩展名结束