用jQuery获取相对图像src
我有图像标签,如下所示:
但是当我使用jQuery访问src位时,jQuery会让我回头:
http://example.comhttps://stackoverflow.com/path/to/my/image.jpg
这在我正在进行的一些比较中引起了问题。 我不想更改我的图像路径以使用绝对URL。
关于如何从图像路径获取绝对URL的任何想法(这可能不像连接域那么简单 – 因为URL有时可能是绝对的),或者获取我在HTML中提供的路径? 无论哪种方式,我需要他们匹配。
根据activa的评论进行编辑
没有很多jQuery代码要发布,我正在使用循环插件,而在onbefore
函数中,我只是调用next.src
。 我的jQuery和JavaScript foo不足以真正理解循环插件正在做什么来生成next
– 如果你熟悉循环的话,我认为它是下一个循环的图像的DOM元素。
我的图片标签实际上是这样的:
在我的onbefore
函数中这段代码:
alert(next.src);
导致警报:
http://127.0.0.1:8000https://stackoverflow.com/site_media/photologue/photos/cache/6927d406810ee9750a754606dcb61d28.jpg
$("img").attr("src")
返回src属性的实际值(在FF3和IE7中尝试过)
所以,当你有
它会回来
http://example.com/path/to/my/image.jpg
当你有
它会回来
https://stackoverflow.com/path/to/my/image.jpg
编辑问题后编辑
听起来你可能想尝试
$(next).attr("src")
你为什么不剥掉它?
var hostname = 'http://' + window.location.hostname;
它会帮助主机名
http://example.com
然后重构你的变量
if( imgSrc == imgSrc2 ) ...
至
if( ImgSource(imgSrc) == imgSrc2 ) ...
运用
function ImgSource(path) { return hostname + path; }
或者另一种方式
function ImgSource(path) { return path.replace(hostname, ''); }
要始终获得完整的解析路径,请使用Element.src
,而不是Element.getAttribute("src")
(这似乎相当于attr(“src”))。
例如:
document.getElementsByTagName("img")[0].src
而不是:
document.getElementsByTagName("img")[0].getAttribute("src")
。 我会让你jqueryify .src。
我在一个似乎是基于.NET的服务器上通过Ajax加载的页面上发生了这种情况。 即使路径是相对的,它返回完整的URL,即使在所有其他浏览器中它工作正常。 仅在IE 8中发生。我无法基于域剥离,因为我正在处理的项目有多个环境。
如果我找到比拆分或正则表达式更换更好的东西,我会报告回来。