如何在JavaScript中获取"原始"href内容

wfa*_*ulk 56 javascript anchor href relative-url

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

但我发现当我访问锚点的href属性时,它总是被标准化或烹饪成包含"http"的表单.也就是说,如果HTML包含:

<a id="rel" href="/relative/link">inner</a>
Run Code Online (Sandbox Code Playgroud)

访问

document.getElementById("rel").href
Run Code Online (Sandbox Code Playgroud)

回报

http://example.com/relative/link
Run Code Online (Sandbox Code Playgroud)

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

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

Gum*_*mbo 57

请尝试使用该getAttribute方法.

  • 不幸的是,即使使用这种方法,IE7 似乎也返回完全限定的 URL。 (2认同)
  • 对于那些感兴趣的人,[this SO](/sf/answers/719634121/) 答案提供了更多关于为什么 `.href` 和 `.getAttibute('href')` 在大多数浏览器上返回不同值的信息。 (2认同)

wfa*_*ulk 34

典型.在发布问题后,我几乎立即想出来了.

代替:

anchor.href
Run Code Online (Sandbox Code Playgroud)

使用:

anchor.getAttribute("href")
Run Code Online (Sandbox Code Playgroud)

当然,输入这个答案花了我更长的时间,而不是其他所有人都回答它.(该死的,你的人很快.)