谷歌浏览器不能使用opener属性的问题和解决

来源:互联网 发布:爱斯曼网络 编辑:程序博客网 时间:2024/06/04 01:15

我先放一个简化的案例:

父页面:

<html>
<head>
<title>HTML_CSSS</title>
<script type="text/javascript">
function open_func() {
window.open("user.html","width=250","height=150");
}
</script>
</head>
<body>
编号: <input type="text" id="numid"/><br/>
姓名: <input type="text" id="nameid"><br/>
<input type="button" value="选择" onclick="open_func()"/>
</body>
</html>


子页面:

<html>
<head>
<title>USER</title>
</head>
<body>
<table>
<tr>
<td>操作</td>
<td>编号</td>
<td>歌名</td>
</tr>
<tr>
<td><input type="button" value="选择" onclick="s1('100','光辉岁月')"></td>
<td>100</td>
<td>光辉岁月</td>
</tr>
<tr>
<td><input type="button" value="选择" onclick="s1('101','冷雨夜')"></td>
<td>101</td>
<td>冷雨夜</td>
</tr>
<tr>
<td><input type="button" value="选择" onclick="s1('102','海阔天空')"></td>
<td>102</td>
<td>海阔天空</td>
</tr>
</table>

<script type="text/javascript">
function s1(num1,name1) {
var pwin = window.opener;
pwin.document.getElementById("numid").value = num1;
pwin.document.getElementById("name1").value = name1;
window.close();
}
</script>

</body>
</html>


症状:能弹出子页面没毛病,但问题是谷歌浏览器在子页面上点击选择按钮毫无反应,IE上需要通过允许,Firefox问题.

原因:是opener属性的缘故,但不是谷歌浏览器的兼容性问题,首先要知道js安全机制原则上是不能访问本地文件的,并且谷歌浏览器的安全设置级别比较高,认定你在"本地"应用opener属性的时候是通过js打开本地文件,所以操作被截止.

但是,在实际开发环境中是不会产生这个问题的,因为当把页面文件部署到服务器上,通过谷歌浏览器输入  localhost/******   或者   127.0.0.1/******  访问该页面,是没有毛病的。

阅读全文
0 0
原创粉丝点击