javascript - 错误 : window. opener 的属性未定义

标签 javascript html

一个页面使用 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
'Window {}',

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

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

弹出页面的window.opener是对opener window的引用,通过'window.opener'对象可以控制opener window。 例如:

<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 中测试了这段代码。

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

最佳答案

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

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

编辑

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

关于javascript - 错误 : window. opener 的属性未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18656840/

相关文章:

javascript - 在 JavaScript 中计算复选框

javascript - Div 内的文本字段

javascript - Typescript:表达函数实例属性

javascript - 使用按键并点击提交

javascript - 在我提到文件名之前,requirejs 如何知道加载所需的 js 文件?

html - IE9 在使用页面 anchor 链接点击后打开新标签

javascript - 如果 tr 有 td[rowspan]

html - 将嵌入式视频放在文本旁边的最佳方式

html - Angular 2 : Forms with Material Design: ng-message doesn't work like it should

javascript - 如何通过 JavaScript 更改内容后重置网页?