1

一个页面使用 window.open() 方法打开另一个页面(例如 openerdemo.html),但弹出页面无法访问打开页面的任何属性。

开瓶器页面代码:

<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>

我在 Chrome 中使用 javascript 控制台,在弹出窗口的 cmd 行中输入“window.opener”,它返回:

window.opener
'窗口 {}',

这意味着打开窗口不为空,但它的所有属性都丢失了。但是,如果一个页面像这样打开一个新页面:

popWin = window.open('', 'popupPage', "width=480,height=272");
popWin.document.write("这是弹出页面");

弹出页面的window.opener 是opener 窗口的引用,只是可以通过'window.opener' 对象来控制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 和 chrome 中测试了这段代码。

谁能告诉我如何控制弹出页面中的开启窗口?

4

1 回答 1

2

它可以正常工作,但是您正在发出跨域请求。如果你打开的窗口和你打开它的窗口在同一个域上,你不会有问题

注意:当您不使用网络服务器而仅使用文件系统(file:/// 是您的协议)时,这可能被归类为跨域请求。我还没有测试过 - 但是请放心,当您在网络上获取它时,只要打开者和被打开者都是来自同一域的服务器,一切都会好起来的。

编辑

我刚刚对我的本地文件系统进行了快速测试,情况确实如此——它被归类为跨域请求,出于安全目的被禁止——再次,当你把它放在网络服务器上时不会有问题提供来自同一域的两个页面。

于 2013-09-06T11:36:03.690 回答