2011-06-09 132 views
67

我有一個「打開」按鈕,用於「計算」應該在新選項卡中打開的鏈接。 我嘗試使用:如何在新選項卡(而不是新窗口)中打開鏈接?

​​

但是,打開一個新窗口。

我也嘗試下面的方法:而不是一個新的標籤

<form id="oform" name="oform" action="" method="post" target="_blank"> 
</form> 

... 

document.getElementById("oform").action = url; 
document.getElementById("oform").submit(); 

不過,打開一個新的窗口。

當使用簡單<a href...>target='blank'時,鏈接將在新選項卡中打開。

有沒有解決方案?

+1

您使用的是哪種瀏覽器? – VAShhh 2011-06-09 16:19:16

+0

在Chrome中,一個'

'在提交時會在新選項卡中打開,因此取決於瀏覽器。 – pimvdb 2011-06-09 16:21:44

+0

我使用鉻,但它打開新窗口,而不是新標籤 – 2011-06-09 16:22:44

回答

65

CSS3支持 「在新標籤中打開」,由酒店target-new

target-new: window | tab | none; 

更新[2016年]:這個方法從未進入了CSS3規範,作爲一個評論表示。這不應該使用。但是,可以看出,除非有人試圖立即調整新選項卡的大小,否則大多數現代瀏覽器都會在新選項卡中打開target='_blank'鏈接。但是,規範中似乎沒有強制這種行爲的機制。


[2011]對於強制在新標籤中打開是很好的支持的方法,請嘗試以下操作:

<a href="some url" target="_newtab">content of the anchor</a> 

否則,使用this方法立即調整窗口大小,以確保彈出窗口阻止程序不會中止彈出窗口

+0

不知道如何使用它 – 2011-06-09 16:27:08

+0

@Erik這些瀏覽器將開始支持這一段時間。現在,你所能做的就是改變firefox中的about:config,強制這個行爲。 – 2011-06-09 16:31:27

+0

但一些網站如何設法做到這一點? – 2011-06-09 16:32:49

9

除了提到的CSS3目標新選項@ anirudh4444之外,您不能也不可以,而且最重要的可能不應該。您試圖控制用戶的體驗,而這應該最有可能留給用戶。

+0

我知道一些網站點擊「登錄」按鈕打開一個新標籤 – 2011-06-09 16:28:54

+3

這是否正確? – Kon 2011-06-09 16:39:41

+0

許多瀏覽器阻止彈出窗口。我希望鏈接在新標籤中打開,以免被阻止 – 2011-06-09 16:41:26

0

在Chrome以下工作:

<script> 
    function buildAndGo() { 
     var aEl = document.getElementById('missingLink'); 
     aEl.href = "#" + resultOfSomeCalculation(); 

     var e = document.createEvent('MouseEvents'); 
     e.initEvent('click', true, true); 

     aEl.dispatchEvent(e); 
    } 
</script> 
... 
<button onclick="buildAndGo()">Do it</button> 
<a href="#" id="missingLink" target="_blank" style="visibility: hidden;"></a> 

以下來源的工作,試圖得到一個IE版本的工作: Selenium BrowserBotYUI User Action

0

在窗體中有目標= 「_空白」(包括一個領先的下劃線),而你的簡單鏈接的目標='空白'沒有領先的下劃線。 「_blank」是指定特定操作的保留字,但「空白」是特定窗口的名稱,可能是新窗口。這就是爲什麼你會得到不同的結果。兩者都是彈出式窗口,但類型不同。

每個用戶都對彈出窗口是否應打開新窗口或新選項卡具有最終控制權。你無能爲力。

3

我能夠使用「表單」元素來解決此問題。

function openNewTab(link) { 
    var frm = $('<form method="get" action="' + link + '" target="_blank"></form>') 
    $("body").append(frm); 
    frm.submit().remove(); 
} 

整個實施過程和詳情,請訪問我的帖子http://mukesh.in/force-open-new-tab-in-browsers-instead-of-windows/

或參閱本JSFiddle

+3

雖然此鏈接可能會回答問題,但最好在此處包含答案的重要部分並提供供參考的鏈接。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – 2014-01-02 11:26:41

+0

第一個鏈接被破壞 – Dairo 2014-12-03 09:44:21

-3

在僅是使用目標標籤會工作的鏈接的情況。

但是在按鍵的情況下,嘗試與的onclick功能這樣做,而不是僅僅使用_blank

使用window.open(URL,目標)函數,而不是 - 它需要一個URL,以及目標窗口的名稱,其行爲等同於目標=「東西」的鏈接屬性....這樣

button(type="button", onclick="window.open('auth/google', '_blank');") 

這應該工作。

+2

'window.open(url,'_blank');'正是OP所說的代碼不起作用的代碼。 – RichieHindle 2014-02-11 14:26:02

6

您可以使用以下任何一種,我在6種不同的瀏覽器中測試了它們。 (谷歌Chrome,Mozilla Firefox瀏覽器,微軟IE瀏覽器,歌劇,K-Meleon的*和Seamonkey。)

  1. <a href="blaah" target="_blank">Blaah</a>
  2. <a href="blaah" target="_tab">Blaah</a>
  3. <a href="blaah" target="_new">Blaah</a>

他們所有的工作完全一樣,和該選擇完全取決於偏好。

* K-meleon,由於某種原因剛剛打開了我點擊鏈接時所在的頁面。

+1

請參閱http://stackoverflow.com/a/4964223/18192。儘管它們都可以工作,但推薦使用_blank。 – Brian 2015-05-08 17:45:34

+1

他們可能都會在您第一次點擊這樣的鏈接時工作。但是,如果您第二次點擊此鏈接,它可能會打開一個新標籤頁,或者可能會在上次使用的相同標籤頁中打開該網址。只有'target =「_ blank」'被定義爲總是使用一個新的標籤頁(或者如果你的瀏覽器是這樣配置的話,則是窗口)。 – 2015-06-17 15:13:23

相關問題