使用 javascript 查找页面上的所有非导航链接
Find all non-navigating links on a page using 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=""])')
我正在处理一个项目,我必须在该项目中找到页面上的所有链接并将事件附加到它们。 问题是,我必须 排除所有非导航链接 。 例如 应排除以下情况
<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=""])')