使用javascript查找页面上的所有非导航链接



我正在做一个项目,在这个项目中,我必须找到页面上的所有链接,并向它们附加一个事件。问题是,我必须排除所有非导航链接。例如。下列情况应排除在之外

<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");
}

但我正在寻找更好的方法或最佳解决方案。请你帮我一下好吗。

也许是类似的东西

$$('a[href]:not([href^="#"]):not([href^="javascript"]):not([href=""])')

最新更新