一个页面使用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 {}',
这意味着开启窗口不为null,但缺少所有属性。但是,如果一个页面打开一个这样的新页面:
popWin = window.open('','popupPage',“width = 480,height = 272”);
popWin.document.write(“这是popupPage”);
弹出页面的window.opener是对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和chrome中测试了这段代码。
有谁能告诉我如何在弹出页面中控制开启窗口?
答案 0 :(得分:2)
它可以正常工作,但您正在进行跨域请求。如果您打开的窗口和打开它的窗口位于同一个域中,则不会出现问题
注意:当您不使用网络服务器时,可能会将其归类为跨域请求,但只使用文件系统(文件:///是您的协议)。我还没有对它进行过测试 - 但请放心,当你在网上得到它时,只要开启者和开放者都是来自同一域的服务器,一切都会好的。
修改强>
我刚刚对我的本地文件系统进行了快速测试,确实如此 - 它被归类为跨域请求,出于安全目的而被禁止 - 再次,当你把它放在上面时它不会是一个问题一个网络服务器,并提供来自同一域的两个页面。