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