JS:提取href和SRC从DOM属性网址作为绝对

问题描述:

我使用jQuery提取从DOM元素的src和HREF如下:JS:提取href和SRC从DOM属性网址作为绝对

var mysrc; 
$('img[src]').each(function (index) { 
    mysrc = $(this).attr('src'); 
    // convert relative path to absolute url 
}); 

然而,许多这些路径来的图像或在链接href是相对的,不是绝对的。有时候,他们从web根目录开始:/blah/img.jpg,以及它们在一个目录中上下移动:../blah/img.jpg。 我想将所有这些路径作为绝对URL,并且我还没有找到脚本来执行此操作。我知道如何从该位置提取给定页面的主机,但后来我错过了将这些相对路径转换为绝对URL的所有逻辑。任何想法,我可以找到一些在Javascript/JQuery中做到这一点,或者我应该如何继续。

感谢您的帮助,

.prop()返回计算的属性值,即绝对路径。
除了使用jQuery方法,您还可以使用普通的this.src

$('img[src]').each(function (index) { 
    // var mysrc = $(this).prop('src'); //<-- jQuery 
    var mysrc = this.src; 
    // Why do you want to get the absolute path, by the way? 
}); 
+0

酷!谢谢。实际上发现这也会起作用:$('#your_img')。get(0).src - 但这可能是相同的东西,对吗? –

+0

@Loic。 '.get(0)'返回jQuery对象的第一个匹配的DOM元素。所以,'$(this).get(0)=== this'。 –

您可能想要获取应用上下文 - 我不认为它在JavaScript中可用。不过,您可能会了解每个应用。

在JSP中,你可以得到背景是这样的:

变种的contextPath = “<%= request.getContextPath()%>”;

其他服务器端语言应该有类似的结构。有上下文可以形成绝对路径,如

绝对路径= window.location - contextPath + relativeURL;

所以,如果您的网址是

http://mysite.com/foo/bar和上下文是http://mysite.com/foo/和相对路径是“../somedir/mypic.jpg”,那么绝对路径将是

/bar/../ somedir/mypic.jpg