父页面:
<html>
<body>
<script type="text/javascript">
function demo(){
window.open("b.html");
}
function de(n){
document.getElementById('a').value = n;
}
</script>
<input type="text" name="a" id="a">
<input type="submit" name="submit" value="submit" onclick="demo()">
</body>
</html>
子页面
子页面调用父页面的de方法,同时将参数传递给de方法中
<html>
<body>
<script type="text/javascript">
function demo2(){
// window.opener.document.all.a.value = "liweixu";
window.opener.de("liweixu");
window.close();
}
</script>
<input type="submit" name="submit" value="submit2" onclick="demo2()">
</body>
</html>
注:
问题:谷歌浏览器在子页面上点击选择按钮毫无反应,IE上需要通过允许可以实现
原因:是opener属性的缘故,但不是谷歌浏览器的兼容性问题,首先要知道js安全机制原则上是不能访问本地文件的,并且谷歌浏览器的安全设置级别比较高,认定你在"本地"应用opener属性的时候是通过js打开本地文件,所以操作被截止.
但是,在实际开发环境中是不会产生这个问题的,因为当把页面文件部署到服务器上,通过谷歌浏览器输入 localhost/****** 或者 127.0.0.1/****** 访问该页面,是没有毛病的。
跨页面参数传递:window.opener详解
本文介绍了如何使用JavaScript的window.opener属性在父页面和子页面之间传递参数。示例展示了一个父页面(包含一个input字段和打开子页面的按钮)和一个子页面(包含一个关闭自身并调用父页面方法的按钮)。在IE浏览器中,允许操作后可正常工作,而在谷歌浏览器中,由于安全机制,本地文件环境下opener属性可能不生效,但在服务器环境下运行正常。

被折叠的 条评论
为什么被折叠?



