我知道在这个主题上已经有几个关于SO的问题了,但它们似乎都很老了......只是试图得到一个最新的答案:
打开新标签(在同一浏览器窗口内)的标准方式仍然是:
window.open('url', '_blank');
window.focus();
???
另外,我已经读过它依赖于浏览器的用户配置(新页面是在新标签页或新窗口中打开,还是新标签/窗口是否得到焦点)......我希望焦点保留在原始标签上,但我更关心它在同一浏览器窗口中打开一个标签(保持焦点只是一个奖励)。
那么有没有办法在新浏览器中读取/获取此设置? (chrome,ff,ie)如果设置为在新窗口中打开,可能会通知用户更改设置?
答案 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