简体   繁体   English

JavaScript:在新标签页中打开链接

[英]JavaScript: open links in new tabs

I would like to make a JavaScript that would put in each link the attribute target="_blank" , so that the link would open in a new tab. 我想制作一个JavaScript,该JavaScript将在每个链接中添加属性target="_blank" ,以便该链接将在新选项卡中打开。 This is how I did it: 这是我的方法:

function open_links_in_new_tabs() {
    var links = document.documentElement.getElementsByTagName( "a" );
    for(var link in links) {
        link.setAttribute("target", "_blank");
    }
}

window.onload = function() { open_links_in_new_tabs(); }

But, this doesn't work. 但是,这不起作用。 Do you see where the mistake is? 您看到错误在哪里吗?

Thanks, 谢谢,

Ivan 伊万

The foo in bar syntax doesn't work on NodeList objects (aka "the stuff returned by document.getElementsByTagName "). foo in bar语法foo in bar 不适用于NodeList对象(又名“ document.getElementsByTagName返回的document.getElementsByTagName ”)。

Use a plain old for (var i = 0; i < links.length; i++) (with links[i] instead of link , of course) loop and it should work. 使用普通的for (var i = 0; i < links.length; i++) (当然用links[i]代替link )循环,它应该可以工作。

You are using the for... in loop slightly wrong here. for... in此处使用for... in循环略有错误。 Try this: 尝试这个:

for(var link in links) {
    links[link].setAttribute("target", "_blank");
}

Edit: Though my example works in this situation, Boldewyn is right in that this will give unexpected results if your script is not operating on elements. 编辑:尽管我的示例在这种情况下有效,但Boldewyn是正确的,如果您的脚本未在元素上运行,这将产生意外的结果。

I tested this on stackoverflow, and it seems to work on all the links :) 我在stackoverflow上进行了测试,它似乎可以在所有链接上工作:)

var links = document.getElementsByTagName("a");

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

Why don't you use jQuery, if you want to use jquery then here's the code: 为什么不使用jQuery,如果要使用jquery,则代码如下:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM