首页新闻找找看学习计划

窗口获取焦点,window.focus() 无效,求解决方法

0
悬赏园豆:50 [已解决问题] 解决于 2019-04-10 11:24
例如:
A页面中使用 window.open('B.html'); 在新窗口打开B页面;
B页面点击返回按钮,如果A页面窗口存在则给予A页面所在窗口焦点(即显示A窗口),如果A页面窗口不存在,则在新窗口打开
B页面js代码如下:
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('返回');//可行,但是体验不好 //============ } }
window.focus()   方法可把焦点给予一个窗口
在Chrome、FireFox、360浏览器、或者较高版本IE等等 无效
网上搜索提到用 setTimeout 延时执行可解决,经尝试还是没有效果
alert 提示信息就可以,但是用户体验不好

请问各位大神有什么好的解决方法,谢谢!

蜉蝣撼天的主页 蜉蝣撼天 | 初学一级 | 园豆:154
提问于:2017-02-15 16:18
< >
分享
最佳答案
0

在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>
收获园豆:50
斯塔克 | 菜鸟二级 |园豆:252 | 2019-04-09 23:47

哈哈 想不到这么久了还有园友回答 试了下确实可行

蜉蝣撼天 | 园豆:154 (初学一级) | 2019-04-10 11:23

@蜉蝣撼天: 正好遇到坑了 该填得填啊

斯塔克 | 园豆:252 (菜鸟二级) | 2019-04-10 16:58
其他回答(3)
0

window.open用户体验就是不好,建议不要用。你可以弹出一个div,div里面可以嵌套一个iframe

弦断有谁听 | 园豆:20 (初学一级) | 2017-02-15 16:25

谢谢你的回复。
一开始就是用 iframe 弹窗的,但是客户要求改成浏览器新开窗口,新开的窗口要能返回上一个窗口(不能关闭新窗口)

支持(0) 反对(0) 蜉蝣撼天 | 园豆:154 (初学一级) | 2017-02-15 16:32

@蜉蝣撼天:新开窗口可以用<a target='_blank' />,把一些参数带过去,返回的时候再带回来就行了。

支持(0) 反对(0) 弦断有谁听 | 园豆:20 (初学一级) | 2017-02-15 16:35

@弦断有谁听: 谢谢你的回复。

可能你没有明白我的意思。就像提问里给出的例子,浏览器有A、B两个窗口,B窗口是由A窗口打开的,打开B窗口后看到的当然是B页面的内容,B页面有一个按钮,要求点击按钮后,浏览器显示A窗口,B窗口不关闭

显示的是B页面:

点击按钮后,显示A页面,B页面不关闭

支持(0) 反对(0) 蜉蝣撼天 | 园豆:154 (初学一级) | 2017-02-15 16:56
0

setTimeout(Awin.focus(), 100);


JoiWilliam | 园豆:546 (小虾三级) | 2017-02-16 15:35

谢谢你的回复。

经试验,没有效果

支持(0) 反对(0) 蜉蝣撼天 | 园豆:154 (初学一级) | 2017-02-16 15:41
0

lz,请问这个问题解决了没有啊 ,我也遇到同样的需求同样的问题 , 研究了好久也没有找到完美的解决方案;可以相互分享下不

老江湖 | 园豆:104 (初学一级) | 2018-01-25 18:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册