console.log(5)的奇怪输出
Strange output with console.log(5)
我有一个最简单的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注入到head元素中。在mail.google.com中,控制台输出是4个5,后面跟着16个Resource interpreted as Other but transferred with MIME type undefined.
。其他站点只显示20个5。
您在脚本中使用了一个全局变量。如果页面中的脚本使用具有相同名称的全局变量,它将更改变量中的值,并且脚本将显示该值。
正如@Guffa所说,您的全局变量可能会被覆盖。将它包含在闭包中可以确保它只能被你的代码访问。
(function () {
var c = 0;
setTimeout(function f() {
if (++c > 20) return;
console.log(5);
setTimeout(f, 500);
}, 500);
}());
相关文章:
- console.log以外的Javascript输出函数
- Node.js/Express未输出console.log,highcharts.js给出未定义的错误
- 监视JavaScript输出,例如console.log()
- 如何格式化卡斯珀.log输出
- JavaScript:控制台的意外输出.log('str' + int + int)
- PhantomJS 控制台.log对象输出 [对象对象]
- 节点console.log默认截断输出.我怎样才能看到完整的输出
- 为什么console.log()在我的代码中输出意外的0
- 避免使用capybaras webkit console.log输出
- Chrome console.log(elementID)在控制台中输出元素
- 如何获取控制台.log输出 getter 结果而不是字符串“[Getter/Setter]”
- 量角器 - 如何在输出文本文件中生成执行报告或显示控制台.log消息
- 在 Jasmine 测试中将 console.log() 的调用重定向到标准输出
- 有没有办法仅使用 JavaScript 来操纵控制台.log输出和下一个用户输入提示之间的时间
- “控制台.log”是否在节点.js中缓冲输出
- JavaScript 控制台.log输出错误的数组长度
- 在控制台中格式化输出.log在 javascript 中
- iWebInspector中的Console.log输出
- Javascript、string、RegEx、if和else if、console.log不同的输出
- Box2dWeb中是否有方法将对象的位置.x输出到console.log()