2010-05-04 3 views
5

사용자가 브라우저를 닫고 "window.onbeforeunload"함수에 코드를 넣었을 때 트리거 할 것으로 생각되는 함수가 있습니다.인터넷 익스플로러를 사용할 때 onbeforeunload 이벤트가 트리거되지 않게하려면

Internet Explorer에서 페이지를 다시로드 할 때마다 onbeforeunload 이벤트가 트리거됩니다. 사용자가 닫거나 현재 페이지에서 벗어나 탐색 할 때만 트리거되기를 원하므로 문제가됩니다. 페이지 새로 고침/다시로드.

그러므로 onbeforeunload가 페이지 새로 고침/다시로드에서 트리거되도록 의도되었는지 잘 모르겠다면 의도 된 경우 다른 방법으로 라운드를 수행 할 수 있습니까? 감사합니다.

답변

0

해결 방법이 없습니다. 페이지에서 언로드 작업을 수행하면 unloadbeforeunload 이벤트가 발생하며 새로 고침과 탐색의 차이를 알 수있는 방법이 없습니다.

몇 가지 시도를 할 수는 있지만 100 % 방법은 없습니다. 예를 들어, 키는 onbeforeunload 핸들러를 설정 해제 할 수있는 새로 고침을 식별 것이지만, 그것은/새로 고침을 클릭하여 자신의 도구 모음 단추를 다시 사용자를 위해 작동하지 않을 것입니다 또는 Ctrl 키 + R F5를 캡처. <a> 요소 또는 <form>onsubmit 초의 모든 클릭에 이벤트 핸들러를 첨부 할 수 있지만 페이지의 주소 표시 줄에 새 주소를 입력하는 사용자에게는 도움이되지 않습니다.

0

XMLHttprequest를 사용하여 새로 고침을해도 IE에 문제가 있습니다. 당신은 IE에서입니다 onbeforeunload 이벤트를 트리거합니다 예를 들어, XMLHttpRequest의를 포함하는 자바 스크립트 함수,

<a href="javascript:void(0)" onclick="addContent();">click to add content</a> 

를 호출 할 필요가 있지만 사파리 나 파이어 폭스에. 어떤 상황에서 일 것이다

하나 개의 솔루션은 흥미로운 앤디의

var guard = true; 
function myOnbeforeunloadHandler() 
{ 
    if(guard) 
    { 
     return "you are about to leave the page and lose data"; 
    } 
} 

function addContent() 
{ 
    getElementById("myDiv").html = "<p>some content</p>"; 
    guard = true; 
} 

<a href="javascript:void(0) onclick="guard=false;addContent();> click to add content</a> 
+0

다른 해결책은 링크를 전혀 만들지 않고 다른 콘텐츠 요소 (span 또는 div)를 클릭하고 클릭하여 붙여 넣으면 IE에 문제가 없습니다. IE는 언로드 시도로 모든 링크를 클릭하는 것으로 간주합니다. – ivanjovanovic

관련 문제