我有最简单的chrome扩展,其中包含内容javascript(没有别的):
script="\
c=0;\
(function f() {\
if (++c>20) return;\
console.log(5);\
setTimeout(f, 500);\
})();\
";
scriptBlock = document.createElement('script');
scriptBlock.type = 'text/javascript';
scriptBlock.appendChild(document.createTextNode(script));
document.getElementsByTagName('head')[0].appendChild(scriptBlock);
这只是将一小块js注入头部元素。
在mail.google.com中,控制台输出为4五,然后是十六Resource interpreted as Other but transferred with MIME type undefined.
每个其他网站只显示20五。
有人能解释一下这种行为吗?
答案 0 :(得分:2)
您在脚本中使用全局变量。如果页面中的脚本使用具有相同名称的全局变量,它将更改变量中的值,而脚本将显示该值。
答案 1 :(得分:1)
正如@Guffa所说,您的全局变量可能会被覆盖。将其包含在闭包内将确保只能通过代码访问它。
(function () {
var c = 0;
setTimeout(function f() {
if (++c > 20) return;
console.log(5);
setTimeout(f, 500);
}, 500);
}());