[英]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.