2009-12-05 4 views
4

팝업을위한 닫기 이벤트를 찾고 있습니다. 내가 for XUL 하나를 찾았지만, HTML이 필요합니다.팝업 폐쇄를 처리하는 적절한 방법

팝업에는 closed 속성이 있습니다.

>>> var popup = open('http://example.com/', 'popup', 'height=400,width=500'); 
>>> popup.closed 
false 

글쎄, 나는 할 수있다. check it once at half second.

function open_popup() { 
    var popup = open('http://example.com/', 'popup', 'height=450,width=450'); 
    var timer = setInterval(function(){ 
    if (popup.closed) { 
     alert('popup closed!'); 
     clearInterval(timer); 
    } 
    }, 500); 
} 

Chrome 4.0.249.27, Opera 10.10, Safari 4.0.4 및 Firefox 3.5.5에서 테스트했습니다. 모두 잘 작동합니다.

하지만 setInterval은 나를 귀찮게합니다. 그것은 추합니다. 이 작업을 수행하는 더 좋은 방법이 있습니까?

업데이트 : 인증 대화 상자 (실제로 oAuth)에 팝업을 사용합니다. popUpdate를 통해 부모 창에 데이터를 보내고 싶습니다.

다른 도메인의 팝업 페이지 내에 있습니다. 따라서 보안 제한으로 인해 어떠한 이벤트 (unload)도 추가 할 수 없습니다.

iframe 버스터 스크립트로 인해 iframe을 사용할 수 없습니다. 따라서 멋진 jQuery 모달 대화 상자를 사용할 수 없습니다.

내용의 팝업창에 개를 편집 할 수 없습니다.

+0

GAH! 나는 바로 전에 이것을하는 길을 보았다! 새로 생성 된 윈도우에는 속성이 있습니다. 생성 된 원래 윈도우를 다시 참조하고 함수를 실행한다고하는 문서의 속성이라고 생각합니다. 그것은 당신의 예제에서 popup.closed와 비슷하게 작동합니다. 다른 말로는 –

+0

아하, 그것을 발견했습니다 - 아래 답변. –

답변

1

당신은 unload 이벤트 들여다 Javascript: Popups

편집에서 살펴 봐야 할 수 있습니다 : 당신이 말한대로, 팝업 내부에 아무것도 편집 할 수 없습니다 정말 남아있는 옵션이 없습니다. 나는 당신의 현재 setInterval 부호가 일을 잘 믿는다. 팝업 마감에 대한 실시간 감지가 절대적으로 중요한지 스스로에게 물어야합니다. 500 밀리 초 타이머는 아무런 리소스도 거의 부담시키지 않으며 누군가의 컴퓨터를 무릎 꿇게합니다.

+0

이것은 작동하지 않습니다. 질문을 업데이트했습니다. – NVI

0

내가 jQuery를 대화 상자를 사용하고 그것은 close 이벤트

http://jqueryui.com/demos/dialog/

있습니다.

귀하의 질문을 이해할 수 있을지 확실하지 않습니다. 왜 타이머를 사용하고 싶습니까?

+0

질문이 업데이트되었습니다. – NVI

0

팝업 창에서 window.opener를 사용하십시오. 즉, 뭔가 같은 :

onunload = opener.alert('popup closed'); 

또는

onunload = opener.nameOfAFunction(); 
+0

팝업창에서 아무 것도 수정할 수 없습니다. – NVI

+0

파일에 액세스하고 싶지 않거나 액세스 권한이 없으므로? popup.onunload = opener와 같은 작업을 수행 할 수 있습니다.경고 ('popup closed'); 파일에 대한 액세스 권한이없는 경우 당신이하고 싶지 않다면, 그럴 필요가 없습니다. 당신이 할 수없는 또 다른 이유가 있다면, 설명해주십시오. –

+0

파일에 대한 액세스 권한이 없습니다. https://api.login.yahoo.com/oauth/v2/request_auth?oauth_token=rpfbncv&oauth_nonce=123456800&oauth_timestamp=1257965400&oauth_consumer_key=ef1uGeq4fP9vbnDXQAtlN0IcKvY8RTef0MztKJfBRYacPiuYmQXFdi10DOU3WSDVfn7MQw5basdrn92urX47wlD3F6G4oOA6JHE6&oauth_signature_method=plaintext&oauth_signature=1e782b9c13315e30d2fbac12348942cc9db674f2%26&oauth_version=1.0&xoauth_lang_pref=en-us&oauth_callback=http:/ 같은 "파일"실제로 뭔가 /mysite.com/callbackurl.php – NVI

관련 문제