2008-10-27 6 views
2

새 웹 페이지 (# 2)를 여는 웹 페이지의 메인 창 (# 1)에서 새 창 (# 3)을 엽니 다.자바 스크립트에서 자식 및 손자 창 처리

내 사용자가 창 # 3 이전에 창 # 2를 닫으면 창 # 3이 더 이상 window.opener에서 함수를 호출 할 수 없다는 문제가 있습니다.

내가하고 싶은데 창 # 2가 닫히면 창 # 1로 창 # 3을 설정하는 것입니다.

나는 (내가 jQuery를 사용하는 방법에 의해)이 난 창 # 2를하려고 노력했습니다 창 # 3 내가 창 # 2에 배열 아이들에게 창을 추가로드

var children = []; 
$(window).unload(function() { 
    $.each(children, function(p, win) { 
     if (win) { 
      win.opener = window.opener; 
      } 
    }); 
}); 

.

하지만 여전히 창 # 2가 창 # 3 이전에 닫히면 창 # 3의 window.opener가 창 # 1을 가리 키지 않습니다.

창 # 2가 닫힌 후에도 내 그랜드 창 (창 # 3)이 주 창 (창 # 1)을 호출 할 수 있는지 어떻게 확인합니까?

답변

3

당신이에 넣어 wndow : 당신은 할머니 창에 대한 핸들을 가지고, 당신은 직접 아무것도 사용할 수 있습니다

<script type="text/javascript"> 
    var grandMother = null; 
    window.onload = function(){ 
    grandMother = window.opener.opener; 
    } 
</script> 

따라서 :

if(grandMother) 
     grandMother.document.getElementById("myDiv").firstChild.nodeValue ="Greetings from your grandchild !-"; 
0

이것은 접선이지만 3 개의 별도 창을 열어야하는 이유는 무엇입니까? 대신 jQuery 대화 상자를 사용할 수 있습니까? 앱이 나에게 창을 열었을 때 나는 매우 좌절감을 느낀다.

0

window.opener은 아마도 읽기 전용입니다. 나는 손자가 장전 될 때 조부모를 지칭하는 자신의 속성을 설정할 것입니다. 세 번째에서

function onLoad() { 
    window.grandparent = window.opener.opener; 
} 
1

세 번째 창이 열리면 기본 창에 대한 참조를 만들어야합니다.

parent = window.opener.opener 

두 번째 창이 닫힐 때까지 유지됩니다.

0
var main_window = get_main_window(); 
function get_main_window(){ 
    var w = window; 
    while(w.opener !== null){ 
     w = w.opener; 
    } 
    return w; 
} 
+0

코드 전용 답변을 피하고 코드에 대한 설명을 제공해주십시오. –