簡體   English   中英

重新編寫頁面上的所有鏈接以通過javascript在新標簽頁中打開

[英]re-write all links on page to open in new tab through javascript

為了使頁面中的所有鏈接不可單擊,我使用以下代碼:

<html>
<body>
<script>
document.body.onclick=function(e){
e.preventDefault();
return false;
}
</script>
<a href="http://www.google.com">Link 1</a>
<a href="http://www.ebay.com">Link 2</a>
</body>
</html>

現在,我知道要在新選項卡中打開鏈接,可以使用:

target="_blank"

但這不是這里的問題,問題是,我該如何:

1)如上所示,首先使所有鏈接不可單擊,然后使所有鏈接都可通過javascript單擊。

2)使用javascript重寫頁面中的所有URL,以在新選項卡中打開。我又如何使用javascript將必要的target="_blank"屬性添加到任何HTML頁面中的所有鏈接?

謝謝!

 <html> <body> <script> document.body.onclick=function(e){ // or addEventListener e.preventDefault(); return false; } window.onload=function() { document.body.onclick=null; var links = document.querySelectorAll("a"); for (var i=0;i<links.length;i++) { links[i].target="_blank"; } } </script> <a href="http://www.google.com">Link 1</a> <a href="http://www.ebay.com">Link 2</a> </body> </html 

或在jQuery中使用attr

$("body").on("click",function(e){
  e.preventDefault();
  return false; // not necessary
});
$(function() {
  $("body").off("click");
  $("a").attr("target")="_blank";
})

如果可以啟用對鏈接的單擊,則可以通過將此標簽添加到頁面<head>來更改默認目標:

<base target="_blank" />

像這樣很容易:

var aList = document.getElementsByTagName('a');
for(var i = 0 ; i < aList.length; i++){
    aList[i].setAttribute('target', '_blank');
}

但是您需要將其放在文檔末尾。

但是,如果您不希望它出現在文檔的末尾,並且希望它能在所有瀏覽器中正常工作,則可以執行以下操作:

var DOMReady = function(a,b,c){b=document,c='addEventListener';b[c]?b[c]('DOMContentLoaded',a):window.attachEvent('onload',a)}

DOMReady(function () {
  var aList = document.getElementsByTagName('a');
  for(var i = 0 ; i < aList.length; i++){
    aList[i].setAttribute('target', '_blank');
  }
});

DOMReady函數用於在dom中調整文檔結構時。 本頁面的另一個代碼使用了此部分: Tiny Cross Browser DOM Ready

只需添加:

$(function(){
    $('a').attr('target', '_blank');
});

代替

document.body.onclick=function(e){
    e.preventDefault();
    return false;
}

但是,請記住,您需要包括jQuery才能做到這一點。

將每個錨點的target屬性設置為'_blank'

document.querySelectorAll("a").forEach(a => a.target = '_blank' );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM