2013-10-31 159 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

相關問題