脚本加载错误

时间:2010-09-15 13:08:59

标签: javascript

鉴于代码片段适用于Firefox,但不适用于Internet Explorer。在IE中,它表示没有定义COMSCORE。

document.writeln('<!-- Begin comScore Tag -->');
document.writeln('<sc'+'ript src="http://someURL/beacon.js">');
document.writeln('</sc'+'ript>');

document.writeln('<sc'+'ript>');
document.writeln('  COMSCORE.beacon({');
document.writeln('    c1:2,');
document.writeln('    c2:7290414,');
document.writeln('    c3:"",');
document.writeln('    c4:"",');
document.writeln('    c5:"",');
document.writeln('    c6:"",');
document.writeln('    c15:""');
document.writeln('  });');
document.writeln('</sc'+'ript>');

但是以下代码适用于两种浏览器。

<script>
    document.write(unescape("%3Cscript src='http://someURL/beacon.js' %3E%3C/script%3E"));
</script>

<script>
  COMSCORE.beacon({
    c1:2,
    c2:7290414,
    c3:"",
    c4:"",
    c5:"",
    c6:"",
    c15:""
  });
</script>

基本上在这两种情况下我都要加载外部javascript文件并尝试使用其中定义的变量。我知道在第一种情况下错误可能是由于JS文件的异步加载。但

1)为什么它在firefox中正常工作。两个浏览器中的JS文件加载机制是否有任何区别

2)为什么它在第二种情况下在IE中起作用。代码尝试以与第一种情况相同的方式工作。

1 个答案:

答案 0 :(得分:0)

如果你必须尝试这个:

var comScoreText = '<!'+'-- Begin comScore Tag -->'; // not really interesting to write this comment, but if you do, escape it!
comScoreText += '<script src="http://someURL/beacon.js"><\/script>'; // you only need to escape the end tag's slash
document.write(comScoreText); // will load the script now
document.write('<script>if (COMSCORE) COMSCORE.beacon({ c1:2,c2:7290414,c3:"",c4:"",c5:"",c6:"",c15:""})<\/script>');

或者如果您需要var:

document.write('<script>if (COMSCORE){ var var1= 7290414; COMSCORE.beacon({ c1:2,c2:var1,c3:"",c4:"",c5:"",c6:"",c15:""})}<\/script>');

var var1 = 7290414
document.write('<script>if (COMSCORE) COMSCORE.beacon({ c1:2,c2:'+var1+',c3:"",c4:"",c5:"",c6:"",c15:""})<\/script>');