代码之家  ›  专栏  ›  技术社区  ›  Basj

向HTML字符串中的每个链接添加target=\u blank

  •  1
  • Basj  · 技术社区  · 6 年前

    我有一根绳子 s (HTML格式的文本段落),我用它将其包含在 div

    document.getElementById("mydiv").innerHTML = s;
    

    s 可能包含一些 <a href="...">...</a> 链接。 如何自动添加 target="_blank" 到这些链接? (这样,如果用户单击它们,它将不会替换当前页面)

    我在考虑使用某种正则表达式来检测 s ,检测target=\u blank是否已经存在,如果没有,则添加它,但这似乎很复杂。 是否最好添加 target=_blank 之后 s 插入DOM后 .innerHTML = s ?如果是,如何?

    2 回复  |  直到 6 年前
        1
  •  5
  •   Mamun    6 年前

    添加锚点后 innerHTML ,使用 querySelectorAll() 。然后设置 target 具有的属性 setAttribute() 如下所示:

    document.querySelectorAll("#mydiv a").forEach(function(a){
      a.setAttribute('target', '_blank');
    })
    
        2
  •  2
  •   gurvinder372    6 年前

    在DOM中插入s后,是否最好添加target=\u blank 之后innerHTML=s?如果是,如何?

    在完成 innerHTML

    document.getElementById("mydiv").innerHTML = s;
    

    迭代所有链接 a 在…内 myDiv 并设置此属性 target 对他们来说

    var myDivEl = document.getElementById( "mydiv" ); //get the reference to myDiv element
    var anchorsInMyDiv = myDivEl.querySelectorAll( "a" ); //get all the anchors in myDiv element
    [ ...anchorsInMyDiv ].forEach( s => s.setAttribute( "target", "_blank" ) ); //iterate all the anchors and set the attribute