这是 tampermonkey 的 bug 吗?

2016 年 2 月 13 日
 yuann72

这是脚本的代码
// ==UserScript==
// @name New Userscript
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @match www.baidu.com
// @grant none
// ==/UserScript==
function ABC(){
alert("");
}

setInterval("ABC()",3000)

运行后控制台里出错误
Uncaught ReferenceError: ABC is not defined

3525 次点击
所在节点    问与答
5 条回复
yuann72
2016 年 2 月 13 日
如果我单独把
function ABC(){
alert("");
}

setInterval("ABC()",3000)
几行代码放控制台里运行就一切正常
pentium100
2016 年 2 月 13 日
试下:
setInterval(ABC,3000)
yuann72
2016 年 2 月 13 日
@pentium100 我在其他脚本里运行同样情况,相关代码正常运行,但控制台里依旧有 Uncaught ReferenceError: ABC is not defined.....算了不管了
现在问下 setInterval 的正确写法是
setInterval(ABC,3000)
那 setTimeout 的正确写法是
setTimeout(ABC,3000)
还是
setTimeout("ABC()",3000);
ceoimon
2016 年 2 月 13 日
@yuann72 setInterval 和 setTimeout 接受的第一个参数可以有三种形式,第一种为函数名,第二种为匿名函数,第三种也是用得最少的一种是直接用语句(双引号包裹,可多条)。

至于 not defined 的问题我猜测是 tampermonkey 会建立自己的命名空间再注册函数以防污染全局变量,所以你无法调用 ABC 函数。
niceb
2017 年 11 月 28 日
请问楼主解决了吗

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.xtra.eu.org/t/256266

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX