Javascript 带有console.log的奇怪输出(5)

Javascript 带有console.log的奇怪输出(5),javascript,google-chrome-extension,Javascript,Google Chrome Extension,我有一个最简单的chrome扩展,它包含一个内容javascript(没有其他内容): 这只是将一小段js注入head元素。 在mail.google.com中,控制台输出为4个5,后面是16个资源,被解释为其他资源,但传输时MIME类型未定义。每个其他站点仅显示20个5 有人能解释一下这种行为吗?您在脚本中使用了一个全局变量。如果页面中的脚本使用具有相同名称的全局变量,它将更改变量中的值,而您的脚本将显示该值。正如@Guffa所说,您的全局变量可能会被覆盖。将它包含在闭包中将确保它只被您的代码

我有一个最简单的chrome扩展,它包含一个内容javascript(没有其他内容):

这只是将一小段js注入head元素。 在mail.google.com中,控制台输出为4个5,后面是16个
资源,被解释为其他资源,但传输时MIME类型未定义。
每个其他站点仅显示20个5


有人能解释一下这种行为吗?

您在脚本中使用了一个全局变量。如果页面中的脚本使用具有相同名称的全局变量,它将更改变量中的值,而您的脚本将显示该值。

正如@Guffa所说,您的全局变量可能会被覆盖。将它包含在闭包中将确保它只被您的代码访问

(function () {
    var c = 0;

    setTimeout(function f() {
        if (++c > 20) return;

        console.log(5);

        setTimeout(f, 500);
    }, 500);
}());

哪个全局变量-c?上面的代码是完整的未更改内容脚本虽然这是真的,但计数器似乎正在工作(OP描述了20个“片段”的输出),即使它被破坏了,这如何解释MIME类型的消息
c
必须是一个非常奇怪的宿主对象,才能使其有意义。@jadegem:是的,c是全局变量@戴文:你说得有道理。。。如果消息的数量不是巧合,那么唯一可能的原因是
console.log
被重新定义…将c更改为c2634,我仍然有问题,我这样做了,从代码中复制并粘贴。问题更严重,现在只显示两次5和18。。。试试看yourself@jadegem是的,很好。尽管如此,我只是在控制台中进行了测试。不过请注意,Chrome会将重复的控制台输出压缩到一行,左边有一个计数。关闭了my mountains主题,现在就可以正常工作了。尝试使用山脉主题。想知道这可能是什么与主题无关-只是在设置上它起作用,在收件箱上不起作用。但我的另一个gmail帐户还可以
(function () {
    var c = 0;

    setTimeout(function f() {
        if (++c > 20) return;

        console.log(5);

        setTimeout(f, 500);
    }, 500);
}());