Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
加载javascript计数器脚本的另一种方法_Javascript - Fatal编程技术网

加载javascript计数器脚本的另一种方法

加载javascript计数器脚本的另一种方法,javascript,Javascript,我正在尝试从自定义js文件加载statcounter脚本。原始脚本如下所示: <html> <head>...</head> <body> ... <script type="text/javascript"> var sc_project=11111111; var sc_invisible=1; var sc_partition=11111111; var sc_click_stat=1; var sc_security="1111

我正在尝试从自定义js文件加载statcounter脚本。原始脚本如下所示:

<html>
<head>...</head>
<body>
...
<script type="text/javascript">
var sc_project=11111111;
var sc_invisible=1;
var sc_partition=11111111;
var sc_click_stat=1;
var sc_security="11111111";
</script><script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"></script>
...
</body></html>
// file: counters.js
function CounterFromStatCounter() {
  sc_project=11111111;
  sc_invisible=1;
  sc_partition=11111111;
  sc_click_stat=1;
  sc_security="11111111";

  var oHead = document.getElementsByTagName('HEAD').item(0);
  var oScript= document.createElement("script");
  oScript.type = "text/javascript";
  oScript.src="http://www.statcounter.com/counter/counter_xhtml.js";
  oHead.appendChild( oScript);
}

 // main page
<html>
<head>
...
<script type="text/javascript" src="counters.js"></script>
...
</head>
<body>
...
<script type="text/javascript">
  CounterFromStatCounter();
</script>
...
</body></html>

...
...
var sc_项目=11111111;
var sc_=1;
var sc_分区=11111111;
var sc_click_stat=1;
var sc_security=“11111111”;
...
代码似乎设置了变量,然后加载计数器脚本,该脚本读取变量的值并执行其工作。 我尝试这样调用计数器脚本:

<html>
<head>...</head>
<body>
...
<script type="text/javascript">
var sc_project=11111111;
var sc_invisible=1;
var sc_partition=11111111;
var sc_click_stat=1;
var sc_security="11111111";
</script><script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"></script>
...
</body></html>
// file: counters.js
function CounterFromStatCounter() {
  sc_project=11111111;
  sc_invisible=1;
  sc_partition=11111111;
  sc_click_stat=1;
  sc_security="11111111";

  var oHead = document.getElementsByTagName('HEAD').item(0);
  var oScript= document.createElement("script");
  oScript.type = "text/javascript";
  oScript.src="http://www.statcounter.com/counter/counter_xhtml.js";
  oHead.appendChild( oScript);
}

 // main page
<html>
<head>
...
<script type="text/javascript" src="counters.js"></script>
...
</head>
<body>
...
<script type="text/javascript">
  CounterFromStatCounter();
</script>
...
</body></html>
//文件:counters.js
函数CounterFromStatCounter(){
sc_项目=11111;
sc_=1;
sc_分区=11111111;
sc_click_stat=1;
sc_security=“11111111”;
var oHead=document.getElementsByTagName('HEAD')。项(0);
var oScript=document.createElement(“脚本”);
oScript.type=“text/javascript”;
oScript.src=”http://www.statcounter.com/counter/counter_xhtml.js";
oHead.appendChild(oScript);
}
//主页
...
...
...
反循环计数器();
...
代码似乎起作用了:引用statcounter脚本的脚本元素按其应该的方式出现在head部分中,但没有记录访问-这意味着计数器脚本无法访问脚本中设置的变量


我做错了什么

你做错了几件事

1) 您可能尚未验证代码。转到并验证您的JavaScript

2) 不要将JavaScript写入HTML。这会迫使所有代码位进入全局名称空间,这很可能会与任何其他JavaScript代码产生冲突

3) 仅在结束正文标记之前直接引用外部JavaScript文件。脚本解释阻止IE中的并行下载


完成这三项任务,然后回来寻求更多帮助。

你做错了几件事

1) 您可能尚未验证代码。转到并验证您的JavaScript

2) 不要将JavaScript写入HTML。这会迫使所有代码位进入全局名称空间,这很可能会与任何其他JavaScript代码产生冲突

3) 仅在结束正文标记之前直接引用外部JavaScript文件。脚本解释阻止IE中的并行下载


完成这三个步骤,然后回来寻求更多帮助。

全局定义变量并编写一些js,如下所示

window.attachEvent('onload', function() {
   document.write('<script type=text\/javascript src=blabla.com\/counter.js><\/sc' + 'ript>');
});
window.attachEvent('onload',function(){
文件。写(“”);
});

这应该可以在IE中使用。对于其他浏览器,实现addEventListener…

全局定义变量并编写一些js,如下所示

window.attachEvent('onload', function() {
   document.write('<script type=text\/javascript src=blabla.com\/counter.js><\/sc' + 'ript>');
});
var CounterFromStatCounter = function () {
    var sc_project = 11111111,
    sc_invisible = 1,
    sc_partition = 11111111,
    sc_click_stat = 1,
    sc_security = "11111111",
    oHead = document.getElementsByTagName('head').item(0),
    oScript= document.createElement("script");
    oScript.setAttribute("type", "text/javascript");
    oScript.setAttribute("src", "http://www.statcounter.com/counter/counter_xhtml.js");
    oHead.appendChild(oScript);
}
window.attachEvent('onload',function(){
文件。写(“”);
});
这应该在IE中工作。对于其他浏览器,实现addEventListener

var CounterFromStatCounter = function () {
    var sc_project = 11111111,
    sc_invisible = 1,
    sc_partition = 11111111,
    sc_click_stat = 1,
    sc_security = "11111111",
    oHead = document.getElementsByTagName('head').item(0),
    oScript= document.createElement("script");
    oScript.setAttribute("type", "text/javascript");
    oScript.setAttribute("src", "http://www.statcounter.com/counter/counter_xhtml.js");
    oHead.appendChild(oScript);
}
我更仔细地研究了上述代码,以下是我的想法:

1) 这就是代码在函数中美化并简化为单个var命令后的外观,除了函数名本身之外,没有任何隐含的全局变量

2) 每次在每个用户处加载页面时,从客户端代码动态创建的内容都会被销毁。因此,您可能不希望使用JavaScript作为任何提供数据引用点的手段来编写输出。我建议完全在服务器端执行此操作,以提高效率。如果必须使用JavaScript,则需要写入一些中间数据存储(如JSON)文件,并使用xmlHttpRequest对象连接到该文件

3) 我不建议从客户端动态地向文档的头部写入任何内容,因为浏览器之间对DOM的解释不同,而且一旦加载了头部,浏览器就没有理由再次读取它以获取新信息

4) 为了提高效率,脚本应该位于在结束正文标记之前引用的外部文件中,因为脚本解释会阻止IE中的并行下载。因此,将脚本放在头部会导致IE中的页面加载速度大大降低

5) 我将“HEAD”改为“HEAD”,因为JavaScript和XHTML都区分大小写

6) 我还更改了将属性附加到动态创建的脚本标记的方式,以使用DOM方法。我不知道这是否是更正确的方法,但它肯定更符合标准

我更仔细地研究了上述代码,以下是我的想法:

1) 这就是代码在函数中美化并简化为单个var命令后的外观,除了函数名本身之外,没有任何隐含的全局变量

2) 每次在每个用户处加载页面时,从客户端代码动态创建的内容都会被销毁。因此,您可能不希望使用JavaScript作为任何提供数据引用点的手段来编写输出。我建议完全在服务器端执行此操作,以提高效率。如果必须使用JavaScript,则需要写入一些中间数据存储(如JSON)文件,并使用xmlHttpRequest对象连接到该文件

3) 我不建议从客户端动态地向文档的头部写入任何内容,因为浏览器之间对DOM的解释不同,而且一旦加载了头部,浏览器就没有理由再次读取它以获取新信息

4) 为了提高效率,脚本应该位于在结束正文标记之前引用的外部文件中,因为脚本解释会阻止IE中的并行下载。因此,将脚本放在头部会导致IE中的页面加载速度大大降低

5) 我将“HEAD”改为“HEAD”,因为JavaScript和XHTML都区分大小写

6) 我还更改了将属性附加到动态创建的脚本标记的方式,以使用DOM方法。我不知道这是否是更正确的方法,但它肯定更符合标准。

2)我还有什么其他选择吗