2012-12-08 27 views
16

現在我有一個鏈接打開URL現有儘可能

<a href="blabla" target="_blank">link</a> 

然而,這總是打開一個新的標籤。我想下面的效果

  1. 如果用戶已經有相同的URL選項卡,再利用該選項卡,並刷新如果可能的話
  2. 否則,打開一個新標籤

我如何能實現這使用JavaScript?

如果只有一些特定於瀏覽器的方法,那麼沒有相應支持的瀏覽器的用戶將會「後備」到始終新標籤的方式。

+0

我還沒有足夠的評論,所以請不要選擇這個作爲答案,但我相信你會在這裏找到一個近乎重複的問題:http://stackoverflow.com/questions/2641812 /如何檢測該相同頁面是否已在另一個窗口中打開即好運! –

回答

19

您可以設置特定窗口的名稱,以便打開重用選項卡。問題是,只要href將相同,它將不會被重新加載。所以你不能輕易獲得refresh部分。

所以,舉例來說,你可以有:

<a href="blabla" target="blabla">link</a> 
<a href="foo" target="bar">link</a> 

在JS,你其實可以得到相同的,使用window.open。你也可以使用URL作爲target,讓您無需手動指定:

<a href="blabla" onclick="window.open(this.href, this.href); return false">link</a> 
<a href="foo" onclick="window.open(this.href, this.href); return false">link</a> 

你也可以概括,並添加點擊監聽到文檔中,爲了打開這樣一些鏈接。喜歡的東西:

<div id="container"> 
    <a href="blabla">link</a> 
    <a href="foo">link</a> 
</div> 

<script> 
    document.getElementById("container").onclick = function(evt){ 
     if (evt.target.tagName === "A") 
      window.open(evt.target.href, evt.target.href); 

     return false; 
    } 
</script> 

如果頁面是在同一個域,在這一點上,你也許可以試着做網頁的經驗刷新爲好。

+2

不知何故,它不適合我。如果我理解了問題和答案,那麼假設是,第一個鏈接點擊將在瀏覽器中打開新標籤,點擊任何鏈接後,同一個瀏覽器標籤應重用...我試過這個解決方案,但從來沒有工作。它每次都會打開新選項卡。除了如果觸發相同的鏈接,它不會打開另一個選項卡。 – Liladhar

+0

請注意,第二個Ctrl + Click瀏覽器(至少Chrome)會切換到此選項卡。這不是我所期望的。 – coolguy