programing

자바스크립트로 팝업을 열고 사용자가 언제 닫는지 감지할 수 있습니까?

muds 2023. 9. 13. 23:58
반응형

자바스크립트로 팝업을 열고 사용자가 언제 닫는지 감지할 수 있습니까?

그 질문은 제목에 거의 다 들어있습니다.

javascript로 팝업을 연 후 사용자가 닫을 때 감지하는 것이 가능합니까?

프로젝트 내에서 jquery를 사용하고 있으니 jquery 솔루션이 좋을 것 같습니다.건배!

할 수 있는 Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ Δ,unload를 통해 원래 창에 알립니다.opener먼저 오프너가 닫혔는지 확인하는 것입니다.이것이 오페라에서 항상 작동하는 것은 아닙니다.

window.onunload = function() {
    var win = window.opener;
    if (!win.closed) {
        win.someFunctionToCallWhenPopUpCloses();
    }
};

로부터 unload뿐만 아니라 실제로 .someFunctionToCallWhenPopUpCloses:

var popUp = window.open("popup.html", "thePopUp", "");
function someFunctionToCallWhenPopUpCloses() {
    window.setTimeout(function() {
        if (popUp.closed) {
            alert("Pop-up definitely closed");
        }
    }, 1);
}

팝업 내용에 대한 제어권이 없거나 대상 브라우저 중 하나가 지원하지 않는 경우unload이벤트, 메인 윈도우에서 일종의 폴링 솔루션으로 축소됩니다.간격을 적합하게 조정합니다.

var win = window.open("popup.html", "thePopUp", "");
var pollTimer = window.setInterval(function() {
    if (win.closed !== false) { // !== is required for compatibility with Opera
        window.clearInterval(pollTimer);
        someFunctionToCallWhenPopUpCloses();
    }
}, 200);

당신의 문제에 아주 간단한 해결책이 있습니다.

먼저 다음과 같은 팝업을 여는 새 개체를 만듭니다.

var winObj = window.open('http://www.google.com','google','width=800,height=600,status=0,toolbar=0');

이 팝업창이 언제 닫히는지 알기 위해서는 다음과 같은 루프로 이를 계속 확인해야 합니다.

var loop = setInterval(function() {   
    if(winObj.closed) {  
        clearInterval(loop);  
        alert('closed');  
    }  
}, 1000); 

이제 원하는 모든 자바스크립트 코드로 경보를 대체할 수 있습니다.

즐거운 시간 보내세요! :)

와 창 이벤트를 살펴보십시오.이를 모니터링하면 다음과 같은 방법을 통해 윈도우가 닫혔을 때 DOM이 언로드될 때 다시 호출할 수 있습니다.

var newWin = window.open('/some/url');
newWin.onunload = function(){
  // DOM unloaded, so the window is likely closed.
}

만약 당신이 jQuery UI Dialog를 사용할 수 있다면, 그것은 실제로close이벤트성의

새 창 통화 열기

var wnd = window.open("file.html", "youruniqueid", "width=400, height=300");

창이 언제 닫히는지만 알고 싶다면 다음을 사용합니다.onunload.

wnd.onunload = function(){
    // do something
};

, 를 에 의 을 를 을 합니다 ( ) 합니다 를 을 를 onbeforeunload.

wnd.onbeforeunload = function(){
    return "are you sure?";
};

우리는 이것을 제 직장 프로젝트 중 하나에서 합니다.

이 방법은 팝업이 닫혔을 때 호출할 계획인 JS 기능을 상위 페이지에 가지고 팝업에서 언로드 이벤트를 후크하는 것입니다.

window.opener는 이.

예를 들어, 만약 내가 다음과 같은 함수를 썼다면,callingPageFunction원래 페이지에서는 팝업에서 다음과 같이 부를 수 있습니다.

$(window).unload(function() {
    window.opener.callingPageFunction()
});

노트 2개:

  1. 이것은 준비된 기능으로 포장되어야 합니다.
  2. 다른 논리를 원하실 수도 있기 때문에 익명 기능이 있습니다.

최선의 방법은 다음과 같습니다.

const popup = this.window.open(url.toString());
popup.addEventListener('unload', ()=> console.log('closed'))

예, 팝업 창에 대해 on beforeUnload 이벤트를 처리한 다음 다음 다음을 사용하여 상위 창에서 함수를 호출합니다.

window.opener.myFunction()

이것은 나에게 효과가 있었습니다. 예를 들어 url이 변경되고 이전 페이지의 DOM이 언로드되고 새로운 페이지의 DOM이 로드되면 DOM이 언로드될 때마다 on unload 이벤트가 트리거됩니다.

var newWin = window.open('/some/url',"Example");
    
newWin.onunload = function(){
     if(newWin.closed){
       // DOM unloaded and Window Closed.Do what ever you want to do here
     } 
}

언급URL : https://stackoverflow.com/questions/3291712/is-it-possible-to-open-a-popup-with-javascript-and-then-detect-when-the-user-clo

반응형