JavaScript如何在检测当前域的变量中包含哈希

JavaScript how to include hash in variable that detects current domain?

本文关键字:变量 包含哈 检测 JavaScript      更新时间:2023-09-26

我的目标是检测href点击,并在链接是外部链接时采取措施。我有以下JavaScript来检测外部链接:

 var isThisDomain = href.match(document.domain.split('.').reverse()[1] + '.' + document.domain.split('.').reverse()[0]);

如果检测到外部链接,我会使用以下方法:

  else if (href != isThisDomain) {
               // do something for external links
          }

这适用于外部链接,但也适用于带有#的内部链接。例如,如果我的网站是www.example.com,如果href是www.example.com/#anchor或www.example.com/category/#anotheranchor.,我不希望它被激发

如何更改isThisDomain以满足此哈希?

您是否尝试过使用document.location.hostname(只获取URL的主机名部分,不包括其他所有内容)并将其与现有URL进行比较?

如果要对页面上的每个链接执行此操作,则需要在所有检查host属性的链接上设置EventListener。如果它是外部的,你需要做什么就做什么。它看起来像这样:

function checkHref(e) {
    var url = e.target.href,
      externalUrl = e.target.host !== document.location.hostname;
    if (externalUrl) {
      console.log(e); // Place your logic here.
    }  
    e.preventDefault();
}
var links = document.getElementsByTagName('a'),
    i;
// Loop through all anchor elements and add an EventListener
for (i = 0; i < links.length; i++) {
    var el = links[i];
    el.addEventListener('click', checkHref, false);
}