Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript:站点将对象传递给setinterval_Javascript_Greasemonkey - Fatal编程技术网

javascript:站点将对象传递给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)

我正在尝试使用Greasemonkey修改网站上的setInterval。我的代码如下所示:

// @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中,因此您需要取消它。