7

我意识到这个主题已经有几个问题了,但它们似乎都已经很老了......只是试图得到一个最新的答案:

打开新选项卡(在同一浏览器窗口中)的标准方式仍然是:

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

???

另外,我读到它取决于用户浏览器的配置(新页面是在新选项卡还是新窗口中打开,以及新选项卡/窗口是否获得焦点)......我会喜欢将焦点保留在原始选项卡上,但我更关心它在同一个浏览器窗口中打开一个选项卡(保持焦点只是一个奖励)。

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

4

2 回答 2

12

我取得了巨大的成功

<a target='_blank' > 
于 2013-10-31T19:50:09.297 回答
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

于 2014-04-30T16:56:02.820 回答