Windows 시스템 가동 시간이 49.7에 가까워지면서 내부 Windows 밀리 초 틱 카운터는 2^32에 접근합니다. setInterval 또는 setTimeout 이벤트를 발생시킬시기를 계산할 때 Internet Explorer 8의 버그가 산술 오버플로가있는 것 같습니다. 예를 들어 가동 시간 49 일에가동 시간 49 일 후 IE8 setInterval 및 setTimeout 즉시 발생합니다.
setInterval(func, 86400000); // fire event in 24 hours
으로 전화하면 func는 24 시간이 아니라 즉시 호출됩니다.
이 버그는 충분한 숫자가 setInterval 또는 setTimeout에 전달되면 25 일 가동 시간 (2^31 밀리 초) 후에 언제든지 발생합니다. (나는 49 일째에만 확인했습니다.)
명령 줄에 "net statistics server"를 입력하여 가동 시간을 확인할 수 있습니다.
해결 방법이 있습니까?
질문이 있습니까 : 아래
이 문제를 해결하는 또 다른 버전인가? 해결 방법을 모색 중이거나 이것을 세계와 공유하고 있습니까? –Sooo ... 기본적으로 시스템 가동 시간이 25 일이 경과 한 후 24 시간 동안 시간 제한을 설정하면 버그가 발생한다고 말하는 것입니까? 시간 초과가 필요할 때가 궁금합니다. –
IE8에서 버그를 더 많이 문서화하고 있습니다. 이것이 문제가 될 수있는 경우의 예를 들면, 1 시간 후에 타이머가 작동한다고하고, 사용자가 다른 페이지로 이동할 때이를 다른 페이지로 리디렉션한다고 가정 해보십시오. 작동 시간이 2 ~ 32 밀리 초의 1 시간 내에있게되면 타이머가 즉시 작동되고 사용자는 원래 페이지에 액세스 할 수 없게됩니다. 가동 시간이 2 ~ 32 밀리 초가되면 모든 것이 다시 작동하기 시작합니다. 하지만 한 시간 동안 페이지가 깨질 것입니다. – user281806