我有一个字符串s
(HTML格式的文字段落),我使用它来将其包含在div
中。
document.getElementById("mydiv").innerHTML = s;
s
可能包含一些<a href="...">...</a>
个链接。 如何自动将target="_blank"
添加到这些链接?(如果用户点击它们,则不会替换当前页面)
我正在考虑使用某种正则表达式来检测s
中的链接,检测是否已经存在target = _blank,如果没有,则添加它,但这看起来很复杂。
在target=_blank
之后将s
插入DOM之后添加.innerHTML = s
会更好吗?如果是这样,怎么样?
答案 0 :(得分:4)
使用innerHTML
添加锚点后,使用querySelectorAll()
遍历所有锚点。然后将target
属性设置为setAttribute()
,如下所示:
document.querySelectorAll("#mydiv a").forEach(function(a){
a.setAttribute('target', '_blank');
})
答案 1 :(得分:2)
在DOM中插入s之后添加target = _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