鉴于代码片段适用于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中起作用。代码尝试以与第一种情况相同的方式工作。
答案 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>');