Javascript - 在新标签页中打开链接(相同的窗口)

时间:2013-10-31 18:47:11

标签: javascript html google-chrome firefox browser

我知道在这个主题上已经有几个关于SO的问题了,但它们似乎都很老了......只是试图得到一个最新的答案:

打开新标签(在同一浏览器窗口内)的标准方式仍然是:

window.open('url', '_blank');
window.focus();

???

另外,我已经读过它依赖于浏览器的用户配置(新页面是在新标签页或新窗口中打开,还是新标签/窗口是否得到焦点)......我希望焦点保留在原始标签上,但我更关心它在同一浏览器窗口中打开一个标签(保持焦点只是一个奖励)。

那么有没有办法在新浏览器中读取/获取此设置? (chrome,ff,ie)如果设置为在新窗口中打开,可能会通知用户更改设置?

2 个答案:

答案 0 :(得分:12)

我在

取得了巨大的成功
<a target='_blank' > 

答案 1 :(得分:9)

使用target="_blank"是有利的。

例如。在Chrome中,target="_blank"的锚点会打开一个新标签,但window.open会打开一个全新的窗口。

我尝试了一些实验,将window.open替换为target="_blank"

被弹出窗口拦截器阻止

// create an anchor, add to body, trigger click
var a = document.createElement('a');
a.setAttribute('href', 'http://google.com');
a.setAttribute('target', '_blank');
document.body.appendChild(a);
a.click();

// hijack first anchor, change href, trigger click
var a = document.getElementsByTagName('a')[0];
a.setAttribute('href', 'http://google.com');
a.setAttribute('target', '_blank');
a.click();

// hijack first anchor that has target=_blank, change href, trigger click
var a = $('a[target="_blank"]')[0];
a.setAttribute('href', 'http://google.com');
a.click();

弹出窗口拦截器允许

// hijack first anchor that has target=_blank, change href, next document click triggers it
var a = $('a[target="_blank"]')[0];
a.setAttribute('href', 'http://google.com');
$(document).click(function(){
    $('a[target="_blank"]')[0].click();
});

// create an anchor, add to body, next document click triggers it
var a = document.createElement('a');
a.setAttribute('href', 'http://google.com');
a.setAttribute('target', '_blank');
document.body.appendChild(a);
$(document).click(function(){
    a.click();
});

只要弹出窗口是由用户交互触发的,弹出窗口阻止程序就允许它。

Mozilla关于window.open的文档:

https://developer.mozilla.org/en-US/docs/Web/API/window.open