2013-01-16 2 views
2

자바 스크립트를 사용하여 팝업 창을 엽니 다.window.opener가 변경되지 않습니다.

팝업 창에는 닫을 때 오프너 창에서 일부 값이 수정되는 코드가 들어 있습니다.

이 같은 ...

window.opener.jQuery ('#의 txtFee') 트리거 ('변화.');

이 논리는 하나의 창에서만 사용할 수 있습니다. 하지만 버그가 있습니다 ...

이 팝업 창을 열 수있는 창은 두 가지가 있습니다. 한 창에서 팝업을 열고 팝업을 열어 둔 채 다른 창에서 팝업을 열면 팝업이 새로 고쳐지지만 window.opener가 여전히 팝업을 여는 데 사용한 첫 번째 창을 참조합니다. 이 문제를 해결할 수있는 방법이 있습니까?

답변

0

팝업 창이 열린 두 창에서 onbeforeunload 및/또는 onunload 이벤트를 팝업 창에 바인딩 할 수 있습니다.

var popWindow = window.open(url, name, options, replace); 
popWindow.focus(); 

popWindow.onbeforeunload = function() 
{ 
    $('#txtFee').trigger('change'); //DO WHATEVER YOU WANT HERE 
    console.log("onbeforeunload fired from ", popWindow.name); 
} 

popWindow.onunload = function() 
{ 
    console.log("onunload fired from ", popWindow.name); 
} 
+0

답변 해 주셔서 감사합니다. 이것은 꽤 좋은 솔루션처럼 보입니다. 창을 닫을 때 이벤트가 발생하지 않는 것 같습니다. '저장'버튼을 누르면 팝업 창이 닫히고 서버 쪽에서 팝업 창에 자바 스크립트가 삽입되어 창을 닫습니다. btnSave_Click {ScriptManager.RegisterStartupScript ("window.opener $ ('txtFee') 발 ('someValue와');.. window.close();); }. 그런 뭔가 이벤트가 때로 믿을 이유는 어떤 생각 ' T는 : 오프너 페이지에서 발사? – hanesjw

+0

테스트 및 작동하는 것 같다 http://jsfiddle.net/jL56j/ - 어떤 생각 : 1) 귀하의 팝업 aspx 시작 스크립트를 등록 보인다. 그 스크립트는 전에 페이지를 닫을 수도 있습니다 이벤트는 오프너에 의해 바인딩됩니다 .2) 브라우저와 버전은 무엇입니까? onbeforeunload가 returnValue를 받아들이므로 반환 값을 기대할 수 있습니다. 아마도 핸들러의 끝에서'return null;'또는'return ""; 3) IE의 경우 개발자 도구를 사용하여 디버깅을 시도 할 수 있으며 그렇지 않은 경우 JS 오류가 있는지 확인하려면 방화범이 치십시오 4) ScriptManager가 이전에 코드에서 팝업에 바인딩 된 스크립트를 제거하고있을 수 있습니다. –

관련 문제