我想验证一个图像的URL,如果它存在或不使用JavaScript。基本上我想分配的URL为图像,如果它的有效。但是,验证URL的JavaScript函数不是逐行执行,会破坏逻辑并将所有URL返回为true。有什么办法可以保持urlExists
函数中的控制权,直到其所有线程都完成为止?javascript对象的逐行执行
当前控件不会等待错误消息的结果,并跳过它以始终返回具有真值的调用函数。任何想法如何使功能保持控制在这里?
function urlExists(testUrl) {
var ret = true;
var newImage = new Image();
newImage.src = testUrl;
$(newImage).error(
function(){
ret = false;
}
);
return ret;
}
function changeImagePath(obj){
var oldUrl = obj.src;
var newUrl = oldUrl.replace("abc","xyz");
if(urlExists(newUrl)){
obj.src = newUrl;
}
}
<img src="http://sample.com/images/srpr/logo_abc.png" onclick="changeImagePath(this)" />
还意味着我正在处理跨域图像URL。
图像加载是异步的,否则,HTTP请求会阻止主线程,并且网站可能无法响应多个秒。您需要使用回调而不是返回值。您可以在StackOverflow上找到数千个示例。 –