【问题标题】:Is the a.href property always returned as absolute?a.href 属性是否总是以绝对值返回?
【发布时间】:2011-04-29 09:39:19
【问题描述】:

在以下 HTML 中:

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

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

我能否保证 javascript 在每个浏览器中始终返回绝对路径?

我问的原因是我抓住了http://www.... 部分来检查链接指向哪个域,我也需要它来处理内部链接。

【问题讨论】:

    标签: javascript dom cross-browser absolute-path


    【解决方案1】:

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

    如果要检索href 属性的原始值(本例中为“page.html”),可以这样做:

    anchor.getAttribute('href')
    

    但是,这似乎不适用于旧版本的 IE(8 及以下)。

    现场演示: http://jsfiddle.net/simevidas/4HgAW/1/

    【讨论】:

    • 对于那些使用 jQuery 的人:当使用 $('#someAnchor').attr('href') 时,jQuery 也会返回原始的 href 属性值。要从 jQuery 元素中获取绝对 URL,您必须使用 $('#someAnchor').get()[0].href
    • @fero jQuery 为此提供了.prop('href'),因此您不必这样做[0].href。顺便说一句,您可以直接使用[0],即您不需要.get()
    • 我不知道prop()。谢谢。但就我而言,我需要 get() 从 jQuery 对象中获取底层 DOM 对象。只是[0] 将返回第一个jQuery 对象,而不是get() 返回的第一个DOM 对象。
    • @fero 不,只有一个 jQuery 对象。单个 DOM 元素不包装在 jQuery 对象中,但整个 DOM 元素集都包装在一个 jQuery 对象中。如果您选择多个 DOM 元素,例如$('.foo'),您可以像这样获取第一个 DOM 元素:$('.foo')[0].get() 仅在您想要获取 DOM 元素的普通(本机)数组时才有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 2013-07-13
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    相关资源
    最近更新 更多