2012-05-01 3 views
1

Greasemonkey를 사용하여 웹 사이트에서 setInterval을 수정하려고합니다. 내 코드는 다음과 같습니다.javascript : setinterval에 객체를 전달하는 사이트

// @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); 

가 어떻게 foo 개체에서 간격 ID 번호를 얻을 수 있습니다 : 사이트의 소스를 보면,이 사용중인 관련 코드 생각?

+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

관련 문제