Javascript Safari和window.open()--如何使用它而不获取焦点?

Javascript Safari和window.open()--如何使用它而不获取焦点?,javascript,browser,safari,cross-browser,Javascript,Browser,Safari,Cross Browser,我的订单输入网站正在增强,以具有主/子窗口体系结构。子窗口将用于“顺便说一下…”搜索,主窗口是进行编辑的地方。主窗口会定期向子窗口报告情况。如果它有一个指向子对象的句柄,比如window.open()中的句柄,那么这很容易 由于用户可能会刷新主窗口(F5),因此页面必须恢复其子窗口列表。除了使用window.open()浏览可能的子窗口名称列表外,我不知道还有什么方法可以做到这一点。在我运行Windows的电脑上,在Chrome/Firefox/MSIE浏览器上测试这个想法,一切正常 然而,我没

我的订单输入网站正在增强,以具有主/子窗口体系结构。子窗口将用于“顺便说一下…”搜索,主窗口是进行编辑的地方。主窗口会定期向子窗口报告情况。如果它有一个指向子对象的句柄,比如window.open()中的句柄,那么这很容易

由于用户可能会刷新主窗口(F5),因此页面必须恢复其子窗口列表。除了使用window.open()浏览可能的子窗口名称列表外,我不知道还有什么方法可以做到这一点。在我运行Windows的电脑上,在Chrome/Firefox/MSIE浏览器上测试这个想法,一切正常

然而,我没有得到很好的狩猎结果。在各种Mac OS/Safari版本上运行时,调用window.open()也总是将该窗口置于前台。对我来说,这是破坏交易的行为。运行window.open()然后运行window.blur()是不可接受的,因为不需要的窗口会闪烁显示

问题:是否有一种方法可以调用window.open()(而不是window.blur()),同时始终抑制“带到前台”行为

问题:是否有方法使用window.open()获取不带窗口句柄的窗口句柄

谢谢,
杰罗姆

window.opener将是您问题的答案。但是IE不支持window.opener。 下面这样的东西会有帮助

if ($.browser.safari)
 std = window.opener("", "childwindowname");
else
 std = window.open("", "childwindowname");

在工作中,一位同事回答说:“window.opener.somefunc(window);”。当子对象被打开时,它调用它的开启器并告诉上下文它有一个子对象。它有一个孩子的名单。我的站点具有复杂的行为,用户可以将父窗口导航到站点中的另一个页面。子对象将定期ping父对象(无论内容如何,父对象与子对象之间的关系始终适用于windows),以减轻其对子对象的健忘症。到目前为止,这是有效的。我想加上这个作为一个单独的答案,但所谓的“离题回答”是对我的批评。