【问题标题】:Find all non-navigating links on a page using javascript使用 javascript 查找页面上的所有非导航链接
【发布时间】: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


    【解决方案1】:

    大概是这样的:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-29
      • 2011-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多