这是 tampermonkey 的 bug 吗?

2016-02-13 11:51:40 +08:00
 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

2806 次点击
所在节点    问与答
5 条回复
yuann72
2016-02-13 11:52:17 +08:00
如果我单独把
function ABC(){
alert("");
}

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

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

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

https://www.v2ex.com/t/256266

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

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

© 2021 V2EX