【问题标题】:Console.log not working inside of setInterval for TampermonkeyConsole.log 在 Tampermonkey 的 setInterval 内不起作用
【发布时间】:2023-03-11 13:49:01
【问题描述】:

我在典型的脚本中多次使用setInterval(),但在用户脚本中却没有。出于某种原因,console.log() 不起作用,但仅在 setInterval 内部。然而,警报正在工作。有任何想法吗..?我不应该使用 console.log 吗?

为了澄清,第一个 console.log("Started!"); 实际上打印开始了。

(function() {
    console.log("Started!");
    setInterval(function(){ findAndReplace();}, 3000);
})();

function findAndReplace() {
    alert("hi");
    console.log("Hey");
} 

【问题讨论】:

  • 嗯.. 似乎在这里工作:jsfiddle.net/seyenaz/ss20m0qt
  • 它在 IE 中有效,但在 FireFox 中无效。
  • 这在 Tampermonkey 中运行得非常好。您没有向我们展示的东西是问题所在。 完整(但简明扼要)脚本?这包括元数据块。 Chrome 和 TM 版本?非标准 TM 设置?
  • 还要注意一些网站确实会破坏控制台功能;我在 IIRC 大约 3 个网站上看到过这个。 console.log("Started!") 会在此之前(就)被触发,如果就是你的情况。
  • @BrockAdams 这是正确的,Twitter 会覆盖它。我最终只是将console.log = console.__proto__.log 放在我的函数的开头,现在它工作得很好。

标签: javascript setinterval tampermonkey


【解决方案1】:

OPer 提供的答案对我不起作用,似乎不再是一个选择。将 GM_log 授予您的脚本并使用 GM_log 函数代替 console.log。

将此添加到脚本标题... // @grant GM_log

在您的代码中使用它... GM_log('<my debug message>');

【讨论】:

    【解决方案2】:

    显然,Twitter 会覆盖 console.log。 “解决方案”是将console.log = console.__proto__.log 放在我的函数顶部。

    【讨论】:

    • Youtube 现在做了类似的事情,但这个解决方案似乎不适用于该网站,至少在 firefox 上是这样。
    猜你喜欢
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-07
    • 2021-03-28
    • 2013-03-22
    相关资源
    最近更新 更多