我有一个链接应该在新选项卡中打开,但如果选项卡已经打开,只需切换到它。 我尝试过使用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>
我知道如何从每个浏览器打开或切换到它?
编辑:我需要在新标签页中打开链接,而不是一个独立的窗口。
答案 0 :(得分:33)
不同的浏览器对window.open()和focus()的行为有所不同。
对于此代码window.open('www.sample.com','mywindow').focus()
答案 1 :(得分:9)
你不需要任何逻辑来做这样的事情。默认情况下,为window.open()
指定第二个参数会为窗口提供“名称”,浏览器会记住该名称。如果您尝试使用相同的名称(在已经打开之后)调用window.open()
,则它不会打开新窗口...但您可能仍需要在其上调用.focus()
。试试这个:
var a = window.open(url, "name");
a.focus();
这些应该是您函数中唯一的代码行,并且您不需要loadingTableWnd
变量......
答案 2 :(得分:4)
如果窗口已经打开,如果您想要关注该窗口,可以使用
window.open('', 'NameOfTheOpenedWindow').focus();
答案 3 :(得分:1)
window.focus()
受到广泛支持 - http://www.w3schools.com/jsref/met_win_focus.asp似乎在我的Internet Explorer和Firefox中运行良好,问题应该在您的代码中。我为你创建了一个简单的jsFiddle测试 - http://jsfiddle.net/Pharaon/uJy5t/
答案 4 :(得分:1)
如果您不希望保留先前打开的选项卡的状态,则可以执行以下操作:
var loadingTableWnd;
function openOrSwitchToWindow(url) {
if (loadingTableWnd != undefined) {
loadingTableWnd.close();
}
loadingTableWnd = window.open(url,'myFrame');
}
答案 5 :(得分:0)
在Firefox 66和Chrome 74中,这对我有效:
wnd = window.wnd && window.wnd.close() || window.open(url, "wnd");
未经其他浏览器测试。感谢roberto(在MarkZ答案的评论中)为我指出了这一解决方案。 (对不起,我无法在该答案中添加评论,对不起)。
window.focus()解决方案不符合我的需求。