我有一个富文本编辑器,它产生的输出也包含超链接。例如<p><a href="test.com" target="_blank">Link1</a> fsdfsdf <a href="google.com" target="_blank">Link2</a> fsdffsdfs</p>
我需要获取其中的所有<a>
代码和href
,以便我可以运行验证,例如,如果它是外部链接,那么我可以添加nofollow
标签等。我应该使用什么样的正则表达式?或者除了正则表达式之外的其他任何东西?
感谢。
答案 0 :(得分:1)
需要获取所有标签和hrefs
或者除了正则表达式之外的其他任何东西?
尝试创建元素以将编辑器文本设置为.innerHTML
,使用.map()
返回a
元素href
属性值的数组
// editor text
var html = document.querySelector("#editor").textContent,
// element to store `html` from editor
div = document.createElement("div"),
// set `div` `.innerHTML` to editor text
div.innerHTML = html;
// `links` : all `a` elements ; `list` : `links` `href` values
var links = [].slice.call(div.querySelectorAll("a")),
list = links.map(function(el) {
return el.href
});
// filter `list`, set `rel="nofollow"` attribute at `a` element
// within `links` where condition at `if` returns `true`
for (var i = 0; i < list.length; i++) {
if (/* condition ; for example if it's an external link */) {
links[i].setAttribute("rel", "nofollow")
}
}