使用JavaScript将相对路径转换为绝对路径

Jam*_*mes 10 html javascript jquery

HTML:

<a href="/">1</a> // link to http://site.com
<a href="/section/page/">2/a> // link to http://site.com/section/page/
<a href="http://site.com/">3</a>
<a href="../gallery/1/">4</a> // link to http://site.com/gallery/1/
Run Code Online (Sandbox Code Playgroud)

JS:

$("a").live('click', function(){
    var url = $(this).attr("href");
    //do something
});
Run Code Online (Sandbox Code Playgroud)

如何var url通过jQuery 将相对路径()转换为绝对路径?

如果脚本已经是绝对路径,脚本应该什么都不做.

谢谢.

use*_*716 24

我很确定如果您使用该href 属性而不是获取该属性,您将拥有一个包含域的完整URL:

$("a").live('click', function(){
    var url = this.href;    // use the property instead of attribute
    //do something
});
Run Code Online (Sandbox Code Playgroud)

如@Phrogz链接的问题所述,听起来好像IE6存在问题.

如果你需要支持它,你可能需要构建href来自不同的部分,如this.hostthis.pathname.IE6支持这些属性.您可以使用其他一些,但您需要验证支持.

jquery live()函数在1.7版本中已弃用,并从1.9中删除,因此使用alternate on():

$("a").on('click', function(){
    var url = this.href;    // use the property instead of attribute
    //do something
});
Run Code Online (Sandbox Code Playgroud)


Wil*_*iss 14

不是OP问的,但是如果有人试图为<img>标签做这个(就像我在发现这个问题的时候那样),那就是使用jQuery的attr方法的秘诀.

这为您提供了src属性的直接内容(如果它是相对的,则是相对的):

$('#your_img').attr('src')

而在DOM对象上调用.src总是给你绝对路径(我需要的):

$('#your_img').get(0).src