场景如下:
www.a.com下有一个页面a.html(http://www.a.com/a.html),页面的代码如下:
<html>
<head>
<title>a.html</title>
</head>
<body>
<a href="http://www.b.com/b.html" target="_blank">b.html _blank</a><br>
<a href="#" onclick="window.open ('http://www.b.com/b.html/')">b.html window.open</a>
</body>
</html>
www.b.com下有一个页面a.html(http://www.b.com/b.html),页面的代码如下:
<html>
<head>
<title>b.html</title>
<script>
if(window.opener!=null){
var wuri = window.opener.location.href ;
var q=getQuery(wuri);//获取父窗体地址栏的某一个参数
window.close();
window.opener.location = "http://www.b.com/login.html"
}else{
window.location = "http://www.b.com/login.html"
}
</script>
</head>
<body>
this is the b.html
</body>
</html>
以上的代码,当显示b.html时,在IE7,IE8下都没有问题,而在IE6下有js错误。
各种测试之后,发现跨域是,IE6不允许读取 window.opener.location.href 的值。
为了让以上代码不出现js错误,暂时把b.html更改为如下:
<html>
<head>
<title>b.html</title>
<script>
try{
window.opener.location.href;
}catch(e){
window.opener=null;
}
if(window.opener!=null){
var wuri = window.opener.location.href ;
var q=getQuery(wuri);//获取父窗体地址栏的某一个参数
window.close();
window.opener.location = "http://www.b.com/login.html"
}else{
window.location = "http://www.b.com/login.html"
}
</script>
</head>
<body>
this is the b.html
</body>
</html>
不知道各位仁人志士,有没有不更改原来逻辑的情况下,解决这个问题。
谢谢
分享到:
相关推荐
window.opener.document.location.reload(); ``` #### 总结 通过本文的介绍,我们可以看到`window.location.href`不仅能够实现简单的页面跳转,还能灵活地应用于复杂框架结构中的页面跳转及刷新。相比`Response....
window.opener.location.href = window.opener.location.href 刷新以winodw.showModelDialog()方法打开的窗口 window.parent.dialogArguments.document.execCommand('Refresh'); 或 Response.Write("<script>...
在JavaScript的世界里,`window`对象是全局对象,它提供了与浏览器窗口进行交互的各种方法和属性。本篇文章将深入探讨`window.open()`、`window.opener`、`window.name`以及`window`对象的一些核心概念,同时通过两...
window.close()` 这段代码在IE6中能够正常工作,但在IE7及更高版本中却失效的问题。 `window.opener` 是JavaScript中的一个属性,它引用了创建当前窗口的窗口对象。在用户通过一个链接或脚本打开新窗口后,新窗口...
3> IE与FireFox对两个弹出窗口在跨域时的解析也有不同:通过window.dialogArguments操作父窗口时,在IE下不需要指定document.domain而在FireFox下则正好相反需要指定才能生效;采用opener方式操作父窗口时都不需要...
在发送窗口(子窗口)中,使用`window.opener.postMessage(data, targetOrigin)`发送消息,其中`data`是你要传递的数据,`targetOrigin`是接收窗口的源。在接收窗口(父窗口)中,需要添加事件监听器: ```...
window.opener.result = result; window.close(); } // 用户在b.html操作后调用sendResultAndClose sendResultAndClose('用户的选择'); // 在原窗口监听新窗口关闭事件 window.addEventListener('message', ...
对window.open进行封装, 使其更好用, 且更兼容, 很多人说window.open不兼容,其实不是, 因为不能直接执行, 必须通过用户手动触发才行;看代码: 代码如下 var openWindow = function(url, options) { var str = ""; ...
标题和描述中提到了JavaScript中的几个与页面跳转和刷新相关的属性,分别是window.location.href、location.href、parent.location.href以及top.location.href。这些属性在JavaScript编程中非常常用,用于控制页面的...
window.opener.location.href = window.opener.location.href; ``` 这里的关键在于利用`location.href`属性来重新设置父窗口的URL,从而达到刷新的目的。需要注意的是,这种方式并不会触发浏览器的缓存机制,而是会...
var txt = window.opener.document.getElementById("msg"); txt.value = "secondsaysyouwelcome"; }); } function secondcall(msg) { if (msg.indexOf("third") > 0) { tw = window.open("third.html", ...
4. **通信桥接**:在某些情况下,`window.opener` 可用于实现跨窗口的数据交换,尤其是在不支持跨文档消息传递(如 `postMessage` API)的旧浏览器中。 ### 注意事项 - 鉴于安全性和隐私考虑,现代浏览器可能会...
window.opener.location.href = url; // 关闭当前的支付窗口 window.close(); } ``` 在实际应用中,需要注意跨域安全问题。由于同源策略的限制,`window.opener`在不同源之间可能无法正常工作。如果支付页面和...
测试的时候发现其在IE下是可以用的而firefox则不能使用了。于是我在location前面加了一个 window,即改为: onclick=”[removed].href(‘http://baidu.com’);” 发现仍然不行。 于是去baidu之,找到一个答案: ...
支持ie6+,火狐,谷歌等浏览器。 代码如下: <html> <head /> <body> [removed] function closeWin(){ window.opener=null; window.open(”,’_self’,”); window.close(); } [removed] <a>logout...