2010-03-03 6 views
1

내가 먼저 함수 이름을 따옴표로 묶여 (및 선택적으로 추가 괄호 솔기)되지 않았을 때, 설정된 시간이 unpredicatbly 행동 것 사파리에 문제가 발생 이 방법으로 읽으려는 코드를 변경하면 Mac의 Firefox 버전에서 코드가 전혀 실행되지 않습니다. 자바 스크립트 맥 파이어 폭스에서는 setInterval() Wierdness

나는 몇 가지가 추가로 그것 (3.0.10 3.6 Windows에서 모두 포함) 리눅스와 윈도우 버전에서 완전히 잘 작동한다는 보장 테스트했다. 이 문제를 일으키는 유일한 조합은 Mac OS X Snow Leopard에서 Firefox (이 경우 3.6)입니다.

그것은 모두 다음과 같은 형식으로 작성하지 않으면 작동하지 복용량

:

repeatInterval = setInterval(foo, 50); 

Mac에서 다른 모든 브라우저와 파이어 폭스에서 작동이 문제에 대한 sollution 운영 체제에 대한 테스트를하지 않고, 거기에 자바 스크립트에서 브라우저를 사용하고 해킹하여 적절하게 작동합니까?

답변

3

setInterval 또는 setTimeout의 첫 번째 매개 변수로 문자열을 전달하지 마십시오. 당신은 (당신이 setInterval(foo, 50);했던 것처럼) 함수 식별자를 전달하거나합니다 (function 키워드를 사용) 익명 함수를 통과해야 하나. `문제가 다른 곳에서 내 특정 문제의 원인에 대한 이해를 기울 된`에서는 setInterval (foo는, 50) :

+0

그것은 모든 브라우저가 실제로이 방법을 처리 할 수 ​​솔기. 나는 setInterval' 개체처럼 행동하고 유일한 참조'repeatInterval'가 새로운'setInterval'로 덮어 경우 덮어 쓸 것'가정. 나는'repeatInterval'에 새로운 간격을 할당하기 전에'clearInterval (repeatInterval)'을 실행하여 이것을 해결했습니다. –

+0

'setInterval'은 핸들을 반환하는 함수입니다. 실제로는 나중에 해당 간격을 취소하는 데만 사용됩니다. 지금 사용법을 이해 한 것 같습니다. –

+0

덕분에, 어떤 경우에 누군가에게 documenation의 어느 부분이 더 많이있는 대한 FEAL를 얻을 수를 elses 의견을 듣고 있습니다. –

관련 문제