【发布时间】:2021-04-16 09:10:00
【问题描述】:
我正在做一个项目,我必须找到页面上的所有链接并将事件附加到它们。 问题是,我必须排除所有非导航链接。 例如 应排除以下情况
<a>
<a href="">
<a href="#">
<a href="#" onclick="return false;" />
<a href="javascript:void(0)">
<a href="javascript:{}">
<a href="#0">
以下代码获取所有链接并将事件附加到它。但并不排除上述情况。
var links = document.getElementsByTagName('a');
for (let link of links) {
if (link.href == base || (link.href.indexOf(base + '#') >= 0)) {
console.log(' - link[' + link.href + '] is same');
} else {
console.log(' + link[' + link.href + '] is bindable');
link.addEventListener("click", function (e) {
fireEvent();
});
}
}
根据我的研究,我似乎最接近实现这一目标的是通过如下正则表达式:
var expression = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)?/gi;
var regex = new RegExp(expression);
var t = link.getAttribute("href");
if (t.match(regex)) {
alert("Successful match");
} else {
alert("No match");
}
但我正在为此寻找更好的方法或最佳解决方案。请你帮帮我。
【问题讨论】:
标签: javascript html regex href