폼의 본문에 onunload 메서드가 작성되었습니다. 페이지에 대량의 컨텐츠가 서버에서 스트리밍되기 때문에 전체 양식을 다운로드하는 데 시간이 걸립니다. 폼이 브라우저로 다운로드되는 동안 사용자가 윈도우 닫기 버튼을 클릭하면 언로드 이벤트 (서버 측 액션을 호출하여 플래그를 재설정하도록 작성)가 가끔 트리거되지 않습니다. 언로드 방법은 페이지의 끝 부분에 기록됩니다. 이유가 무엇입니까? 거기에 onunload 호출되도록 보장 할 수있는 어쨌든 있나요?IE에서 항상 HTML 페이지 언로드가 호출되지 않습니다
답변
두 가지 이유가 있습니다. 당신이 말했던 것처럼, 브라우저가 언로드에 도달하지 않을 수도 있으므로 body 태그 위에 선언해야합니다.
다른 하나는 GoldenNewby가 이미 말했듯이 경고와 같이 코드를 마무리 할 시간이 필요하다는 것입니다. 이는 자바 스크립트가 다음 페이지가 준비 될 때 메모리에서 지워지고 실행이 이전 스크립트에서 단순히 중지되기 때문입니다. 스크립트가 페이지로드보다 시간이 덜 걸린다는 것을 보장 할 수 있다면 경고는 필요하지 않지만 실행에 2ms 이상 걸릴 수 있다면 약간의 시간을 들여야합니다.
IE에는 onbeforeunload
이벤트가 있지만 대신 사용할 수 있습니다. onunload
이 이미 일을 끝내면 onbeforeunload
일찍 끝낼 수 있도록 플래그를 설정하십시오.
window.onunload = window.onbeforeunload = function() {
if (window.isAlreadyUnloaded) return;
window.isAlreadyUnloaded = true;
// do your stuff here.
}
Windows.onload가 아직 실행되지 않은 경우 IE가 언로드 이벤트를 실행하지 않는다는 사실이 아마 있습니다. 그 해결책은이 블로그 포스트에 설명되어 있습니다 : http://blog.moxiecode.com/2008/04/08/unload-event-never-fires-in-ie/
참고 : 블로그 게시물에 설명 된 onstop 이벤트는 IE의 최신 버전 (최소한 10 및 11)에서 동일한 방식으로 작동하지 않습니다. onload 이벤트 이전에 페이지를 탐색 (또는 새로 고침)하면 실행되지 않습니다. 나에게 맞는 해결책은 핸들러를 onload뿐만 아니라 onbeforeunload 이벤트에 바인드하는 것이었다. –
- 1. NPAPI 플러그인이 항상 호출되지 않습니다
- 2. 항상 동일한 HTML 페이지 표시
- 3. 언로드가 IE9 및 FF4에서 작동하지 않습니다.
- 4. JSF2 : commandLink 작업 메서드는 항상 호출되지 않습니다
- 5. toString()이 항상 자동으로 호출되지 않습니다.
- 6. didAddAnnotationViews가 항상 호출되지 않음
- 7. BIRT의 페이지 나누기 IE에서 작동하지 않습니다 8
- 8. 메뉴 막대를 항상 표시 할 HTML 페이지
- 9. HTML 코멘트는 IE에서 무시
- 10. HTML 폼에서 서블릿을 호출하지만 서블릿은 호출되지 않습니다
- 11. JavaScript로 HTML 선택 옵션이 IE에서 작동하지 않습니다
- 12. IE에서 느린 페이지 언로드
- 13. 쿠키는 항상 IE에서 null을 반환합니다.
- 14. 안드로이드의 TimerTask (전화가 디버깅되지 않을 때 주로 호출되지) 항상 호출되지
- 15. IE에서 내용을 표시하지 않습니다.
- 16. shouldOverrideUrlLoading()이 호출되지 않습니다.
- 17. JavaScript 함수가 호출되지 않습니다.
- 18. IE8에서 Page_Init이 호출되지 않습니다.
- 19. 웹 메서드가 호출되지 않습니다.
- 20. 기본 생성자가 호출되지 않습니다.
- 21. jQuery fadeOut() 함수가 Chrome, Firefox, IE에서 항상 작동하지 않습니다
- 22. IE에서 웹 페이지 열기 C#
- 23. JavaScript에서 'onmousedown'이 호출되지 않습니다.
- 24. 대화 상자에서 사용자 정의 IInternetSecurityManager가 호출되지 않습니다.
- 25. jQuery가 IE에서 작동하지 않습니다.
- 26. $ .get이 IE에서 작동하지 않습니다
- 27. $ .getJson이 IE에서 작동하지 않습니다.
- 28. Uploadify onComplete가 호출되지 않습니다.
- 29. IE에서 jQuery .clone() .html() 버그
- 30. IE에서 페이지 나누기가있는 테이블 인쇄
과거 경험에서 볼 때, onunload 이벤트는 원하는만큼 실행하도록 보장되지 않습니다. 코드가 끝나기 전에 다음 페이지가로드되면 완료되지 않을 수 있습니다. 응용 프로그램에 따라 코드를 실행할 시간을주기 위해 경고 또는 확인 프롬프트를 표시 할 수 있습니다. – GoldenNewby