javascript - console.log(5) 的奇怪输出

标签 javascript google-chrome-extension

我有最简单的 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 注入(inject)到 head 元素中。 在 mail.google.com 中,控制台输出是 4 个五,后跟十六个 Resource interpreted as Other but transferred with MIME type undefined。每个其他站点只显示 20 个五。

谁能解释一下这种行为?

最佳答案

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

关于javascript - console.log(5) 的奇怪输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8711899/

相关文章:

javascript - 通过换行从文本区域值创建列表

html - 如何获得 chrome 扩展程序来影响网页本身? (不是弹出窗口)

google-chrome - 如何在 google chrome 扩展程序中加载外部 content_script?

javascript - 从 Javascript 中的异步函数获取返回值

javascript - Minicart.js - 商品已添加到购物车,但购物车未显示

javascript - 如何在 node.js 中发起 https 请求

javascript - 在JS中查找语言的unicode字符集

javascript - 未捕获的类型错误 : Cannot read property 'network' of undefined in Chrome Extension

javascript - 带标签的 Chrome 扩展

javascript - 当选择选项已被另一个选择选项选择时,如何禁用选择选项中的值