2012-05-01 42 views
1

我試圖在使用Greasemonkey的網站上修改setInterval。我的代碼如下所示:javascript:網站傳遞對象設置間隔

// @run-at   document-start 

(function() { 
    var clearIntervalOriginal = unsafeWindow.clearInterval; 
    unsafeWindow.clearInterval = function(foo) { 
     GM_log(typeof foo + ":" + foo) 
     clearIntervalOriginal(foo); 
    } 
}()); 

website

如果你看一下控制檯登錄,你會看到,間隔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); 

我怎樣才能得到間隔ID號從foo對象?

+0

你是一個誰可以看到什麼'console.log'輸出。基於無論如何,這應該是微不足道的爲自己回答。 –

+0

第二段代碼中的'c'參考是什麼?在第一個位中,'clearInterval'被替換(這不是一個好的策略),然後調用'clearTimeout'。這是打算嗎?正如尼克所說,定時器引用位於'i.tid'中,所以這就是你需要取消它。 – RobG

回答

0

難道我讀你的代碼錯誤,或者是你的clearIntervalOriginal函數遞歸調用本身循環往復?

在雅虎代碼中,i.tid是間隔ID。如果你想取消間隔,你需要提供該ID。例如:

clearInterval(i.tid); 

https://developer.mozilla.org/en/DOM/window.clearInterval