这段代码中的.JS文件在哪里?为什么他们这样称呼它?

时间:2011-10-02 16:14:32

标签: javascript json asynchronous

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>

5 个答案:

答案 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>
  • 2,14创建一个匿名函数包装器,以便无法从函数外部访问变量(“scope”)
  • 3 acc看起来像是广告客户的标识符
  • 4,5 st = "nocss"or = "h"看起来像调整外观的设置
  • 7,10-12创建了<script>标记。 async =加载脚本不会阻止文档的执行。 defer=true阻止脚本不被执行(可以省略)
  • 6,13新创建的脚本标记在(13)文档(6,13)
  • 中的第一个脚本标记之前插入
  • 8,9构造URL:
    如果当前页面是通过安全连接传输的,注入的脚本也将通过HTTPS协议传输。

省略了所请求文件的扩展名。可以使用服务器配置的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)

我看到的好处是:

  1. 有助于更快地呈现UI的异步加载
  2. 用于加载当前页面的协议之后的js源位置的选择性httphttps
  3. 我想知道为什么js源不会以.js扩展名结束