2013-09-06 3 views
0

한 페이지가 window.open() 메서드를 사용하여 다른 페이지 (예 : openerdemo.html)를 열었지만 팝업 페이지가 오프너 페이지의 속성에 액세스 할 수 없습니다.Error : window.opener 속성이 정의되지 않았습니다.

오프너 페이지 코드 :

<head> 
    <meta http-equiv="content-type" content="html/text"; charset="utf-8" > 
    <title>windowdemo</title> 

    <script language="JavaScript"> 

     function openWin(thisurl) { 
      popWin = window.open(thisurl, 'popupPage', "width=480,height=272"); 
     } 

    </script> 
</head> 

<body> 
    <input type="button" value="open" onClick="openWin('openerdemo.htm')"/> 
</body> 

팝업 페이지 (openerdemo.htm) 코드 :

<html> 
<head> 
    <meta http-equiv="content-type" content="html/text"; charset="utf-8" > 
    <title>windowdemo</title> 

    <script language="JavaScript"> 

     function closeWin() { 
      window.opener.close(); 
      window.close(); 
     } 
    </script> 
</head> 

<body> 
<h1><a href="#" onClick="closeWin()">close all</a></h1> 
</body> 

내가 크롬에서 자바 스크립트 콘솔을 사용하여이받는 'window.opener'를 입력 팝업 창의 cmd 행, 반환 :

window.opener
'Window {}',

즉, 오프너 창은 null이 아니지만 모든 속성이 누락되었음을 의미합니다. 그러나 한 페이지가 다음과 같은 새 페이지를 여는 경우 :

popWin = window.open ('', 'popupPage', "width = 480, height = 272");
popWin.document.write ("this is popupPage");

팝업 페이지의 window.opener는 오프너 창을 참조하며 'window.opener'객체로 오프너 창을 제어 할 수 있습니다. 예 :

<body> 

<script type="text/javascript"> 
myWindow=window.open('','','width=200,height=100') 
myWindow.document.write("This is 'myWindow'") 
myWindow.focus() 
myWindow.opener.document.write("This is the parent window") 
</script> 

</body> 

내가 FF, IE와 크롬에서이 코드를 테스트합니다.

아무도 팝업 페이지에서 오프너 창을 제어하는 ​​방법을 말해 줄 수 있습니까?

답변

2

괜찮 으면 작동하지만 도메인 간 요청을하는 중입니다. 열려있는 창과 열어 본 창과 동일한 창에있는 경우 문제가 없습니다.

참고 : 웹 서버를 사용하지 않는 경우 도메인 간 요청으로 분류 될 수 있습니다. 하지만 파일 시스템 (file : ///은 여러분의 프로토콜)을 사용하는 것입니다. 나는 그것을 테스트하지는 않았다. 그러나 웹에서 얻을 때 오프너와 오픈이 모두 같은 도메인의 서버 인 한 모두 잘 될 것이다.

편집

난 그냥 내 로컬 파일 시스템의 빠른 테스트를했고,이 사실 경우 - 그것은 크로스 도메인 요청으로 분류 그리고 보안을 위해 금지 - 다시, 그것은하지 않습니다 웹 서버에 올려 놓고 동일한 도메인의 두 페이지를 모두 게재 할 때 문제가 될 수 있습니다.

+0

대단히 감사합니다! :-) – RichardFan

+0

당신을 진심으로 환영합니다. 이 대답을 수락하십시오. – Adam

관련 문제