2009-10-27 3 views
1
var checkTextValue = setTimeout(function() { 
var textVal = $('p').text(); 
if (textVal == 'expectedValue'){ 
    callback(); 
} else { 
    setTimeout(arguments.callee, 10); 
} 
},10); 

이 코드가 있습니다. 정상적으로 작동하지만 문제는 firefox에서 페이지가 끝없이로드되는 것입니다.javascript setTimeout, 페이지가 끝없이로드 중임 (firefox)

+1

끝없이로드하는 것 외에 단락의 텍스트를 업데이트 할 예정인 이벤트는 무엇입니까? 업데이트 된 적이 있습니까? 어떤 일을 하느냐에 따라 10ms 지연은 다른 이벤트가 발생하기에 충분하지 않을 수 있습니다 (현대 시스템에서는 그렇지 않을 수도 있음). –

+0

내 실제 코드에서 나는 그 iframe에서 단락을 얻습니다. 단락은 그 iframe에서 성공한 결과로 PHP 페이지에 인쇄됩니다. 그 단락에서 찾고있는 것은 ... (성공을 위해 1을 인쇄하고 0 실패에 대한) – kmunky

+0

당신은 아약스 요청에 의해 iframe을 교체하는 것이 좋습니다 ... – jantimon

답변

0

그것은 끝없이로드되기 때문입니다. 기본적으로 재귀를 수행하고 10 밀리 초마다 다른 인스턴스를 시작합니다. 시간이 충분히 주어지면이 코드로 브라우저를 종료 할 수도 있습니다.

대신 입력란에 onchange -eventhandler를 사용해보세요.

+2

나는 그것이 매 10 밀리 초, 초가 아니라는 것을 확신한다. – Cameron

+0

괜찮지 만, textVal이 예상 값을 얻을 때까지 10 밀리 초마다 함수가 호출된다. 이 코드를 해석하는 방법은 ... – kmunky

+0

dang, 정확합니다 ... – ty812

-1

재귀의 사례라고 생각합니다. 더 많은 단서를 찾기위한 Google의 재연 ' 농담이야. 값이 'expectedValue'가 아니면 checkTextValue가 무기한 실행됩니다.

1

쓸모없는 것 같습니다 ... 나는 setTimeout (checkTextValue, 10)을 의미합니다. - 너 거기에서 뭐하고있어? checkTextValue는 단지 타임 아웃 ID입니다. 그 밖의 것은 없습니다 ... FF가 끝이 없기 때문에 단순히 코드가 잘못 되었기 때문에 생각할 필요가 없습니다 ...

+0

이것은 내 원본 스크립트의 작은 버전이며, 나는 그것을 (arguments.callee) 업데이트했습니다, 그리고 그것은 정말로 ... 유일한 문제입니다 그것은 FF로 상태를 영구히로드 중입니다 – kmunky

+1

var check = function() {console.log ('chack'); setTimeout (chack, 1000); } check(); 이 코드는이 로딩 문제없이 완벽하게 작동합니다 (동일한 작업이 단순화되었습니다). 그래서 그것을 밖으로 시도하십시오. 작동하는 경우 - 즉, 시간 초과 자체를 늘릴 필요가 있음을 의미합니다. – Jefim

+1

Btw, 귀하의 코드는 FF 3.5.4pre Win에서 작동합니다. 그래서, 음 ... FF 확인해 주시겠습니까? :) '유사하게'나타나는 증상이 없습니다. – Jefim

관련 문제