Javascript 如果文件存在,请更改图像源
我有 这一点是我将有许多这样的Javascript 如果文件存在,请更改图像源,javascript,jquery,Javascript,Jquery,我有 这一点是我将有许多这样的inlinedivdiv。每一个都有2个div,一个保存图像,一个保存链接。这些是从另一个站点上的子站点列表动态生成的 我想让它做的是用类inlinediv检查每个div。在diviconLinkText中获取链接的内部文本,并在站点中搜索具有该名称的文件。(用于此测试。)如果它存在,则将图像src更改为它 我可能是走了一条完全错误的路,但我似乎无法让它发挥作用。测试时,它甚至找不到inlinedivdiv!说它是空的 我对jQuery很陌生,但有人有什么建议吗?(
inlinediv
div。每一个都有2个div,一个保存图像,一个保存链接。这些是从另一个站点上的子站点列表动态生成的
我想让它做的是用类inlinediv
检查每个div。在diviconLinkText
中获取链接的内部文本,并在站点中搜索具有该名称的文件。(用于此测试。)如果它存在,则将图像src更改为它
我可能是走了一条完全错误的路,但我似乎无法让它发挥作用。测试时,它甚至找不到inlinediv
div!说它是空的
我对jQuery很陌生,但有人有什么建议吗?(我甚至不知道自己是否解释得很好!)同源策略阻止您向其他域发出AJAX请求。除非你是在运行这个“http://www.mojopin.co.uk“,此代码将不起作用。仅使用jQuery无法解决此问题:不允许您向第三个网站发出请求 最简单的解决方案是在服务器上实现一个服务,将请求代理到外部网站 基本上,如果你的网站是开放的 然后你创造 (例如) 您可以使用所需的url进行查询
您不必使用AJAX来实现这一点,因为您可以不受任何限制地从其他域热链接图像。以下是检查图像是否存在的方法:
function checkImage(src) {
var img = new Image();
img.onload = function() {
// code to set the src on success
};
img.onerror = function() {
// doesn't exist or error loading
};
img.src = src; // fires off loading of image
}
这是一个有效的实现这是一种基于承诺的现代方法,它将返回一个带有布尔值的承诺
函数imageExists(src){
返回新承诺((解决、拒绝)=>{
var img=新图像();
img.onload=函数(){
决心(正确);
}
img.onerror=功能(错误){
决议(假);
}
img.src=src;
})
}
常量imagePath=”http://www.google.com/images/logo_sm.gif";
imageExists(imagePath)。然后(doesExist=>{
log('doesImageExist',doesExist);
});
啊,对了,那么检查文件是否存在的最佳方法是什么?此外,它还没有忘记这样一个事实:它似乎无法在inlinediv中找到
!插入一个IMG标签并连接一个onload事件。然后将图像的SRC设置为您正在测试的图像。如果它在几秒钟内没有出现,它可能不存在。我不明白,我想如果图像不存在,使用默认图像,但如果它确实存在,则使用默认图像。我已经让它的其余部分工作了,只需要检查一下是否存在。你眼前的问题是你在小提琴上使用Mootools。您需要从框架下拉列表中选择要使用的jQuery版本。>:(不知道为什么会更改。干杯。我现在有更多的工作要做!非常方便!Tho向控制台抛出“未找到资源”错误。各种其他“重复”类似问题的答案对我来说并不如这一个好。一些AJAX驱动的方法导致了Firefox中的NS_错误_失败,这一个没有。谢谢!