2014-06-06 2 views
0

Chrome, FireFox, Safari에서 코드를 사용해 보았습니다. 아직도 onbeforeunload는 발사하지 않는다. 나도 onunload를 시도했지만 작동하지 않았다.onbeforeunload 이벤트가 실행되지 않는 이유

다음은 실험 할 코드입니다.

<!doctype html> 
<html lang="en"> 
<head> 
    <title> Output to a Page </title> 
    <meta charset="utf-8"> 
    <script> 
    window.onload = init; 
    window.onclick = clk; 
    window.onbeforeunload = closing; 
    function clk() { 
     window.alert("Ouch !!"); 
    } 
    function closing() { 
     console.log("function alrt WORKS !!!!"); 
     window.alert("closing now....."); 
    } 
    function init() { 
     var output = ""; 
     for (var mms = 5; mms > 0; mms--) { 
     if (mms >= 3) { 
      output += "Still lots of M&amp;Ms left, so eat more!<br>"; 
     } else { 
      output += "Getting low on M&amp;Ms, take it easy!<br>"; 
     } 
     } 
     output += "All out of M&amp;Ms"; 
     var e = document.getElementById("output"); 
     e.innerHTML = output; 
    } 

    </script> 
</head> 
<body> 
    <p id="output"></p> 
</body> 
</html> 

답변

15

onbeforeunload 이벤트는 보안상의 이유로,-수 취소되지 않지만, onbeforeunload 이벤트에 대한 이벤트 핸들러 함수는 문자열 값을 반환하는 경우,이 텍스트는 확인 대화 상자, 사용자에 표시됩니다 그가 현재 페이지를 머물고 싶거나 떠나고 싶은지 여부를 확인할 수 있습니다. 이벤트 리스너 addEventListenerattachEvent 방법 (전용 사파리와 구글 크롬 지원 IT)과 onbeforeunload 이벤트에 등록 할 수 없습니다

참고. 크로스 브라우저 솔루션의 경우 오브젝트의 onbeforeunload 속성 (body 요소) 또는 onbeforeunload 인 라인 이벤트 특성을 사용하여 이벤트 핸들러를 HTML에 등록하십시오. 자세한 내용은 아래 예제를 참조하십시오.

예 : HTML에서

: 자바 스크립트에서

<ELEMENT onbeforeunload="handler">

다음 onbeforeunload 이벤트를 호출

object.onbeforeunload = handler;       
object.addEventListener ("beforeunload", handler, useCapture); 

작업 :

  1. 브라우저 또는 링크를 통해 다른 페이지로 직접 이동합니다.
  2. 현재 브라우저 창이나 탭 페이지를 닫습니다.
  3. 현재 페이지를 다시로드 중입니다.
  4. JavaScript에서 위치 개체를 통해 현재로드 된 페이지의 URL을 조작합니다.
  5. window.navigate 메서드를 호출합니다.
  6. window.open 또는 document.open 메서드를 호출하여 같은 창에서 문서를 엽니 다.

시도는 다음과 같이 코드를 수정합니다 :

window.onbeforeunload = closing; 
/* other code here */ 

var closing = function() { 
     console.log("function alrt WORKS !!!!"); 
     window.alert("closing now....."); 
     } 

... 또는 당신의 body 태그에 직접 코드를 넣어 :

<body onbeforeunload="alert('function alrt WORKS !!!!')">

herehere를 참조하십시오 자세한 내용은.

+0

현재이 방법만으로 onbeforeunload 이벤트에 대한 전체 크로스 브라우저 지원을 얻을 수 있습니다 (Firefox는 특정 조건에서 실행하지 않습니다). 이 위대한 답변 주셔서 감사합니다! – user3351605

-1

beforeunload도 onunload도 사용자가 브라우저를 닫을 때 호출되어야하는 하나의 아약스 호출을 실행하지 못하는 문제에 직면했습니다. 사실, 어떤 방법도 효과가 없었습니다. javascript 메서드는 실제로 문제가되었던 body 태그 안에있었습니다. Head tag 안에 javascript 메소드를 옮겼을 때 마술처럼 해결되었습니다.

+0

코드 예제를 공유 할 수 있습니까? 무슨 뜻인지 잘 모르겠다. –

관련 문제