跳转到已打开的tab页,而非重新打开一个

一个<a href target="_blank">标签,总是会打开新tab页。

使用window.open,可以实现跳转到已打开的tab页,而非重新打开一个。

直接上代码

HTML
1
<span onclick="jump()">跳转到163邮箱</span>
JS
1
2
3
4
5
6
function jump() {
var newTab = window.open('', '163_mail');
if (newTab.location.href !== 'https://mail.163.com') {
window.open('https://mail.163.com', '163_mail');
}
}

代码讲解

1
var newTab = window.open('', '163_mail');

其中第一个参数strUrl是要打开的链接地址,第二个参数strWindowName是打开新tab页的名称。

如果strWindowName不为空,浏览器会尝试在已打开的标签页中,寻找以此为名称的tab页。

如果找到了,则直接跳转到该tab页;如果没找到,则打开一个新的about:blanktab页(因为strUrl为空)。

1
2
3
if (newTab.location.href !== 'https://mail.163.com') {
window.open('https://mail.163.com', '163_mail');
}

判断跳转或打开的tab页,地址是否为目标URL。

如果匹配,什么也不做;如果不匹配,则在该tab页打开目标URL。

参考

window.open-MDN文档