a.href属性是否总是返回绝对路径?

13

在以下HTML代码中:

<a id="link" href="page.htm">Page</a>

我发现document.getElementById("link").href总是返回page.htm的绝对路径,而不是我输入的相对路径。请参见http://jsfiddle.net/4HgAW/

我能保证在每个浏览器中javascript都会返回绝对路径吗?

我问这个问题的原因是我正在获取http://www....部分以检查链接指向哪个域,并且我需要它也适用于内部链接。

1个回答

23

是的,所有相关的浏览器都会返回完全限定的URL。

如果你想获取href属性的原始值(在本例中为'page.html'),可以这样做:

anchor.getAttribute('href')

然而,在旧版IE(8及以下版本)中似乎无法正常工作。

实时演示:http://jsfiddle.net/simevidas/4HgAW/1/


2
对于使用jQuery的人:当使用$('#someAnchor').attr('href')时,jQuery也会返回原始的href属性值。要从jQuery元素获取绝对URL,必须使用$('#someAnchor').get()[0].href - fero
3
jQuery提供了.prop('href')来实现这个目的,所以您不必使用[0].href。另外,您可以直接使用[0],即不需要.get() - Šime Vidas
我不知道 prop()。谢谢。但在我的情况下,我需要使用 get() 从 jQuery 对象中获取底层 DOM 对象。只使用 [0] 将返回第一个 jQuery 对象,而不是 get() 返回的第一个 DOM 对象。 - fero
@fero 不,只有一个jQuery对象。单个DOM元素不会被包装在jQuery对象中,但整个DOM元素集合会被包装在一个jQuery对象中。如果您选择多个DOM元素,例如$('.foo'),则可以通过以下方式获取第一个DOM元素:$('.foo')[0]。当您想要获取DOM元素的普通(本机)数组时,.get()才有用。 - Šime Vidas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接