2010-03-23 9 views
8

우리는 window.location.href를 사용하여 사용자를 페이지로 이동합니다. 또한 window.onbeforeunload 이벤트를 구성하여 저장되지 않은 변경 사항이있을 경우 사용자에게 경고합니다. 이 저장되지 않은 변경하고, 내가 사용자를 탐색하는 window.location.href를 사용하려고 장소에서IE의 window.onbeforeunload 및 window.location.href

window.onbeforeunload = confirmBeforeClose; 

function confirmBeforeClose() { 
    if (jwd.global.inEditMode) 
     return "Your changes will not be saved :) and you will be punished to death"; 
} 

, 내가 경고 메시지가 표시됩니다.

팝업창에서 확인을 클릭하면 정상적으로 작동합니다. 그러나 CANCEL을 클릭하면 JS가 window.location.href에서 지정되지 않은 오류를 발생시킵니다.

도움을 주시면 감사하겠습니다.

+0

당신이'location.href'을하고있는 코드를 제시해주십시오. –

+0

IE7에서만 이것을 재현 할 수 있습니다. FF 3.6, Chrome 4 및 IE8은 오류를 발생시키지 않습니다 (IE6은 테스트하지 않음). 질문이나 제목의 일부로 IE7을 추가하십시오. – Nick

답변

11

나는 또한 IE6 이상에서는 IE7 이상에서이 문제를 겪고있었습니다.

유일한 해결책은 try/catch 블록에서 window.location.href 호출을 래핑하는 것입니다.

다음은 문제를 재현하는 전체 예제입니다. try/catch를 주석 처리하지 않으면 모든 브라우저에서 원하는대로 작동합니다.

자바 스크립트 (HTML 머리) :

window.onbeforeunload = confirmBeforeClose; 

    function confirmBeforeClose() 
    { 
    return 'You have made changes on this page that will be lost if you navigate away without saving.'; 
    } 

    function leavePage() 
    { 
    // try { 
      window.location.href = "http://www.example.com"; 
    // } catch(e) { } 
    } 

HTML :

 
<body> 
<a href="#" onclick="leavePage(); return false;">Leave this page</a> 
</body> 
+2

미래의 방문자를 위해 : IE9에서만 나에게 맞게 수정되었으므로 분명히 IE7이 아닙니다. –

+1

... 그리고 IE11에 대해서도! – nitram

+0

.......... 그리고 가장자리 –