如何在 JavaScript 中获取“原始”href 内容
-
20-09-2019 - |
题
我正在尝试编写一个 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
我希望它能帮助。
不隶属于 StackOverflow