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?
});
答
您可能想要获取应用上下文 - 我不认为它在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
酷!谢谢。实际上发现这也会起作用:$('#your_img')。get(0).src - 但这可能是相同的东西,对吗? –
@Loic。 '.get(0)'返回jQuery对象的第一个匹配的DOM元素。所以,'$(this).get(0)=== this'。 –