Javascript - 从 link 获取 GET 参数并阻止打开

Javascript - Get GET parameter from link and prevent opening

我想阻止打开指向特定域的 links,但存储包含的 GET 参数以使用 Javascript 调用另一个函数。

示例 link:http://sub.example.com/?service=address&id=23

因此我现在有这个:

[].forEach.call(document.querySelectorAll("a[href*='sub.example.com'"), function(a){
    a.setAttribute('onclick', '
        var url = new URL(this.href);
        var service = url.searchParams.get("service");
        console.log(service); 
        return false;
    ')
})

我认为它与 URL 对象的创建有关,但不幸的是,我在 Edge DevTools 中没有收到任何错误消息。我在控制台上没有得到任何输出,并且 link 仍然打开,return false; 也没有达到。

有人可以给我提示吗? 提前致谢。

用单引号或双引号分隔的字符串中不能有换行符。更好的做法是使用 addEventListener and event.preventDefault 代替。

[].forEach.call(document.querySelectorAll("a[href*='sub.example.com'"), function(a) {
  a.addEventListener('click', function(e) {
    e.preventDefault();
    var url = new URL(this.href);
    var service = url.searchParams.get("service");
    console.log(service);
  });
})
<a href="http://sub.example.com/?service=address&id=23">Link</a>