2017-08-14 174 views
1

我使用以下javascript(由m59this上一個答案中提供)來隱藏鏈接的目標,該鏈接通常顯示在瀏覽器窗口的底部懸停在一個鏈接上:html/javascript:隱藏鏈接目標並在新標籤中打開鏈接

<div> 
    <a data-href="http://www.google.com/"> LINK </a> 

    <script type="text/javascript"> 
     var anchors = document.querySelectorAll('a[data-href]'); 

     for (var i=0; i<anchors.length; ++i) { 
      var anchor = anchors[i]; 
      var href = anchor.getAttribute('data-href'); 
      anchor.addEventListener('click', function() { 
      window.location = href; 
      }); 
     } 
    </script> 
</div> 

這工作得很好,但我想鏈接打開一個新標籤以及。我該如何改變腳本才能做到這一點?

我嘗試使用window.open('href','_blank');而不是window.location = href;哪些不起作用。

+0

可以在這個類似的帖子上找到答案:https://stackoverflow.com/questions/4907843/open-a-url-in-a-new-tab-and-not-a-new-window-using- javascript –

+0

您可以在鏈接上使用按鈕元素。 – Anthony

+2

我很想知道爲什麼你必須嘗試隱藏用戶的URL。 – BoffinbraiN

回答

0

除非即時失去了一些東西,最明顯的事情是目標添加到錨:

<a data-href="http://www.google.com/" target="blank"> LINK </a> 
-1

爲什麼不直接使用一個onclick事件處理程序將用戶重定向?

<a href="" onclick="onClick">link</a> 

function onClick(e) { 
    e.preventDefault(); 
    document.location.href='www.google.ca'; 
} 
+0

問題不在於'addEventListener',而是'document.location = ...',因爲這不會在新選項卡中打開鏈接,並且您的答案也無法解決此問題。使用內聯事件監聽器是你永遠不應該做的事情。 –

+0

你說得對,我忘記了關於打開新標籤的部分。我想知道更多關於你稱之爲「內聯事件監聽器」的內容,以及它們爲什麼是不好的做法。你能否給我提供一個解釋這些事情的文檔的鏈接? @ t.niese –

+0

我現在沒有鏈接。一般來說,您應該始終保持css,html和js分開維護的原因。在較大的js項目中,您可能需要使用檢查未使用的函數和變量的linting工具,並且您可能希望應用縮小和優化腳本。這些腳本沒有看到html標籤內部的代碼,因此linter不會看到使用此函數,縮小腳本可能會破壞您的代碼,因爲它縮短了函數名稱。從html標籤調用的函數需要在全局範圍內可見,這也可能導致衝突。 –

0

這是如何做到這一點(嘗試在你的代碼,計算器塊新的標籤和鏈接)

var anchors = document.querySelectorAll('a[data-href]'); 
 

 
     for (var i=0; i<anchors.length; ++i) { 
 
      var anchor = anchors[i]; 
 
      var href = anchor.getAttribute('data-href'); 
 
      anchor.addEventListener('click', function() { 
 
      window.open(href,'',''); 
 
      }); 
 
     }
<div> 
 
    <a data-href="http://www.google.com/"> LINK </a> 
 

 
</div>

0

可以看到here,窗口的這種語法。打開:

var window = window.open(url, windowName, [windowFeatures]); 

因此,要打開新的標籤頁的鏈接,你應該使用類似:

var myNewTab = window.open(url, '_blank'); 

如果窗口被打開,「_blank」

0

你嘗試window.open(href)這將無法正常工作?

即在你的例子中,href是一個字符串(有單引號),而不是變量。

相關問題