var Awin = null;//A 窗口对象 function GoBack() { if (Awin == null) { Awin = window.opener;//返回对创建此窗口的窗口的引用(A窗口对象) } if (Awin.closed) { Awin = window.open(Awin.location.href); } else { //方法1====== Awin.focus();//无效 //=========== //方法2======= window.blur(); setTimeout(Awin.focus, 0);//无效 //============
//方法3======== Awin.alert('返回');//可行,但是体验不好 //============ } }
请问各位大神有什么好的解决方法,谢谢!
在A中 为window定义名称(因为默认是空),然后在B打开此名称的窗口。代码如下:
页面A代码
<script>
window.name = '123'
document.getElementById('test').addEventListener('click', function () {
window.open('index2.html', 'mywindow');
});
document.getElementById('test2').addEventListener('click', function () {
window.open('javascript:;', 'mywindow');
});
</script>
页面B代码:
<script>
document.getElementById('test').addEventListener('click', function () {
window.open("javascript:;", window.opener.name);
})
</script>
哈哈 想不到这么久了还有园友回答 试了下确实可行
@蜉蝣撼天: 正好遇到坑了 该填得填啊
window.open用户体验就是不好,建议不要用。你可以弹出一个div,div里面可以嵌套一个iframe
谢谢你的回复。
一开始就是用 iframe 弹窗的,但是客户要求改成浏览器新开窗口,新开的窗口要能返回上一个窗口(不能关闭新窗口)
@蜉蝣撼天:新开窗口可以用<a target='_blank' />,把一些参数带过去,返回的时候再带回来就行了。
@弦断有谁听: 谢谢你的回复。
可能你没有明白我的意思。就像提问里给出的例子,浏览器有A、B两个窗口,B窗口是由A窗口打开的,打开B窗口后看到的当然是B页面的内容,B页面有一个按钮,要求点击按钮后,浏览器显示A窗口,B窗口不关闭
显示的是B页面:
点击按钮后,显示A页面,B页面不关闭
setTimeout(Awin.focus(), 100);
谢谢你的回复。
经试验,没有效果
lz,请问这个问题解决了没有啊 ,我也遇到同样的需求同样的问题 , 研究了好久也没有找到完美的解决方案;可以相互分享下不