Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用选项卡时如何将焦点设置为子窗口和打开窗口_Javascript_Browser - Fatal编程技术网

Javascript 使用选项卡时如何将焦点设置为子窗口和打开窗口

Javascript 使用选项卡时如何将焦点设置为子窗口和打开窗口,javascript,browser,Javascript,Browser,在另一个浏览器选项卡中,如何将焦点设置回父窗口?我试过: window.opener.focus(); 无济于事。它似乎只有在窗口未停靠时才起作用 我需要它在Chrome、IE9/10、Firefox和Safari中工作 Internet Explorer在设置子窗口的焦点时似乎也有问题。例如,使用时: var windowRef = window.open(url); 然后,稍后从同一选项卡: windowRef.focus(); // ok in Chrome, doesn't seem

在另一个浏览器选项卡中,如何将焦点设置回父窗口?我试过:

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()
调用不起作用,因为两个窗口不是从同一个来源提供服务的。尝试通过设置通信通道来解决此问题。因此,在
开场白
文档中,聆听以下事件:

window.addEventListener('message', function (event) {
    window.focus();
}, false);
opener.postMessage('foo', '*');
在打开的窗口中,发送如下消息:

window.addEventListener('message', function (event) {
    window.focus();
}, false);
opener.postMessage('foo', '*');
遗憾的是,我现在无法测试这是否有效。(不过,我想应该……)

不过,有几点需要补充:

  • 一些旧的垃圾浏览器不支持postMessage(请参阅)。不过,还有一些变通办法。:)
  • 我使用W3标准符号来附加事件侦听器。IE8及以下版本使用其专有的
    attachEvent
    等效产品
  • 您应该将
    “*”
    原点通配符替换为打开器窗口的实际原点
  • 在message event listener函数中,您应该检查event.origin,并且只有在origin正确时才运行实际负载

  • 谢谢defaude,我会尝试一下,让你知道不幸的是,这也不起作用:(-是的,我的目的是让另一个浏览器选项卡成为活动选项卡。嗯,太糟糕了。如果我能找到时间,我会研究测试这个,可能会为你找到解决方案:)真的很抱歉,但我想这是不可能的:(