在另一个浏览器选项卡中,如何将焦点设置回父窗口?我试过了:
window.opener.focus();
无济于事.它似乎只在窗口没有停靠时工作.
我需要在Chrome,IE9 / 10,Firefox和Safari中使用它.
Internet Explorer似乎也有问题将焦点设置到子窗口.例如.使用时:
var windowRef = window.open(url);
然后从同一个标签:
windowRef.focus(); // ok in Chrome,doesn't seem to work in IE...
解决方法
你到底想要达到什么目的?将焦点设置在另一个窗口内的第一个链接/按钮/表单字段/什么?或者使另一个窗口(浏览器选项卡)成为活动的浏览器选项卡?
无论如何 – 也许opener.focus()调用不起作用,因为两个窗口都不是来自同一个源.尝试通过postMessage设置通信通道以解决此问题.所以在开场文档中,听一下这样的事件:
window.addEventListener('message',function (event) { window.focus(); },false);
在打开的窗口中,发送如下消息:
opener.postMessage('foo','*');
可悲的是,我无法测试这是否正常. (我想它应该,但……)
>某些旧版垃圾浏览器不支持postMessage(参见caniuse.com).但是有一些解决方法.