2013-10-31 123 views
8

我意识到这个话题已经有一些关于SO的问题,但它们都似乎很老了....只是试图获得一个最新的回答是:Javascript - 在新标签页中打开链接(SAME WINDOW)

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

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

???

另外,我读过它依赖于他们的浏览器的用户配置(无论新的页面在新标签页还是新窗口打开,以及新标签页/窗口是否获得焦点)。 ..我希望重点放在原始标签上,但我更关心的是在同一浏览器窗口中打开一个标签(保持专注只是一种奖励)。

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

回答

12

我曾与

<a target='_blank' > 
+1

所引用jQueryUI的链接是有关添加选项卡浏览器选项卡内的网络应用程序;不是关于添加浏览器选项卡! –

+2

你知道吗?你是对的。回想起来,我不知道为什么我会联系到这一点。 – Giganticus

9

使用target="_blank"是有利巨大的成功。

例如。在Chrome中,主播与target="_blank"打开一个新选项卡,但是,window.open打开一个全新的窗口。

我试了几次实验,用target="_blank"代替window.open

通过弹出式窗口拦截

// 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

相关问题