我正在尝试编写一个 GreaseMonkey 脚本,在其中我想找到所有相对链接的链接。在我看来,这样做的方法是将 href 的内容与 /^https?:///.

但我发现当我访问锚点的 href 属性时,它总是被标准化或烘焙成包含“http”的形式。也就是说,如果 HTML 包含:

<a id="rel" href="/relative/link">inner</a>

访问

document.getElementById("rel").href

回报

http://example.com/relative/link

如何访问 href 属性中的原始数据?

或者,是否有更好的方法来查找相关链接?

有帮助吗?

解决方案

尝试 getAttribute方法代替。

其他提示

典型。我张贴的问题后几乎立刻理解了它自己。

,而不是:

anchor.href

使用:

anchor.getAttribute("href")

当然,我花了更长的这个答案输入比它把其他人来回答。 (妈的,你人快。)

下面的代码片段,你可以运行测试。

const anchors = document.getElementsByTagName('a');

for (let anchor of anchors) {
  let hrefFullPath = anchor.href;
  let hrefRelativePath = anchor.attributes.href.value;

  console.log('hrefFullPath', hrefFullPath);
  console.log('hrefRelativePath', hrefRelativePath);
}

让我们说,你是在http://localhost:4200,这是因为你在问题中显示您的文档。

<a id="rel" href="/relative/link">inner</a>

href的这种锚定的属性值是:

document.getElementById('rel').attributes.href.value => /relative/link

和锚的href值是:

document.getElementById('rel').href =>  http://localhost:4200/relative/link

我希望它能帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top