javascript:站点将对象传递给setinterval
我正在尝试使用Greasemonkey修改网站上的setInterval。我的代码如下所示:javascript:站点将对象传递给setinterval,javascript,greasemonkey,Javascript,Greasemonkey,我正在尝试使用Greasemonkey修改网站上的setInterval。我的代码如下所示: // @run-at document-start (function() { var clearIntervalOriginal = unsafeWindow.clearInterval; unsafeWindow.clearInterval = function(foo) { GM_log(typeof foo + ":" + foo)
// @run-at document-start
(function() {
var clearIntervalOriginal = unsafeWindow.clearInterval;
unsafeWindow.clearInterval = function(foo) {
GM_log(typeof foo + ":" + foo)
clearIntervalOriginal(foo);
}
}());
例如
如果您查看控制台日志,您将看到间隔ID号不在那里,而foo有时是一个对象。查看站点源代码,我认为这是正在使用的相关代码:
//yahoo code
i.tid=c.setInterval(function(){
if(i.done){
c.clearTimeout(i.tid);
i.rec=[i.t_render-h,i.t_jsload-h,i.t_jsinit-h,i.t_jsend-h,i.t_jsend-i.t_jsinit]
}
},f);
如何从foo对象中获取间隔ID号?是我读错了您的代码,还是您的clearIntervalOriginal函数递归地无限调用自己 在Yahoo代码中,i.tid是间隔id。如果要取消间隔,则需要提供该id。例如:
clearInterval(i.tid);
您可以查看console.log输出的内容。基于这一点,你自己回答这个问题应该很简单。c在第二段代码中引用了什么?在第一位中,替换clearInterval,这不是一个好的开始策略,然后调用稍后的clearTimeout。这是有意的吗?正如Nick所说,计时器引用在i.tid中,因此您需要取消它。