在新窗口中打开链接,如果已经打开则关注它

jar*_*ics 28 html javascript

我有一个链接应该在新选项卡中打开,但如果选项卡已经打开,只需切换到它.我尝试使用javascript,wnd = window.open()和wnd.focus(),它在Chrome 19中有效,但在FF 13或IE 9中无效.这是我编写的代码:

<script type="text/javascript">
var loadingTableWnd;
function openOrSwitchToWindow(url){
if(loadingTableWnd == undefined)
loadingTableWnd = window.open(url,'myFrame');
else
loadingTableWnd.focus();
}
</script> 
<a href='javascript:openOrSwitchToWindow("/");' >Loading Table</a>
Run Code Online (Sandbox Code Playgroud)

知道我怎样才能从每个浏览器打开或切换到?

编辑:我需要在新选项卡中打开链接,而不是一个独立的窗口.

jar*_*ics 36

不同的浏览器对window.open()和focus()的行为有所不同.对于此代码window.open('www.sample.com','mywindow').focus()

  • Chrome 20打开一个新标签,并关注后续的open()调用,无论是否调用focus().
  • Firefox 13打开一个新选项卡,侧重于第一个open(),不关注后续open()调用/忽略focus().
  • IE 8打开一个新窗口,荣誉焦点().
  • Safari 5打开一个新窗口,并关注后续的open()调用,无论是否调用focus().

小提琴测试:http://jsfiddle.net/jaraics/pEG3j/

  • 如果可能,请更新您对 iOs 9.3.2 - iphone6(与 Chrome 或 Safari 无关)的答案:打开一个新选项卡,专注于第一个 open(),不专注于后续 open() 调用/忽略 focus()。 (2认同)

Ian*_*Ian 15

对于像这样的事情,你不应该需要任何逻辑.默认情况下,指定第二个参数window.open()可为窗口提供浏览器记住的"名称".如果您尝试window.open()使用相同的名称进行呼叫(在已经打开之后),则不会打开新窗口...但您可能仍需要呼叫.focus()它.试试这个:

var a = window.open(url, "name");
a.focus();
Run Code Online (Sandbox Code Playgroud)

那些应该是你函数中唯一的代码行,你不需要loadingTableWnd变量......


小智 5

如果该窗口已经打开,并且您想专注于该窗口,则可以使用

window.open('', 'NameOfTheOpenedWindow').focus();
Run Code Online (Sandbox Code Playgroud)