Javascript 这是检查URL是否引用JS/jQuery中的图像的有效测试吗 $(函数(){ $("

Javascript 这是检查URL是否引用JS/jQuery中的图像的有效测试吗 $(函数(){ $(",javascript,jquery,Javascript,Jquery,从中得到灵感 更新 下一步是:如何将此逻辑封装到函数中 $(函数(){ 函数IsValidImage url(url){ $(" 但它当然会失败…我如何从Internal事件处理程序返回?或者我如何实现这一点?我认为是的,因为当未找到映像时,会触发一个错误事件。就像在代码中一样,如果找不到映像(意味着不是映像的有效路径),警报将显示消息error! 下面是它的另一个版本: $(function() { function IsValidImageUrl(url) { $("

从中得到灵感

更新

下一步是:如何将此逻辑封装到函数中

$(函数(){
函数IsValidImage url(url){
$("

但它当然会失败…我如何从Internal事件处理程序返回?或者我如何实现这一点?

我认为是的,因为当未找到映像时,会触发一个
错误
事件。就像在代码中一样,如果找不到映像(意味着不是映像的有效路径),警报将显示消息
error!

下面是它的另一个版本:

$(function() {
    function IsValidImageUrl(url) {
        $("<img>", {
            src: url,
            error: function() { return false; },
            load: function() { return true; }
        });
    }
    alert(IsValidImageUrl("http://goo.gl/GWtGo"));
    alert(IsValidImageUrl("http://error"));
});
如果找不到以前指定的图像,您还可以更改图像的路径,如下所示:

$('#imgID').error(function(){
  alert('image not found !');
});
$('#imgID').error(function(){
   this.src = 'new path to some image';
});
function IsValidImageUrl(url) {
    $("<img>", {
        src: url,
        error: function() { alert(url + ': ' + false); },
        load: function() { alert(url + ': ' + true); }
    });
}

IsValidImageUrl("http://goo.gl/GWtGo");
IsValidImageUrl("http://error");

在javascript中,您永远无法将异步调用转换为同步调用

error
load
都是异步事件,因此您必须这样做:

$('#imgID').error(function(){
  alert('image not found !');
});
$('#imgID').error(function(){
   this.src = 'new path to some image';
});
function IsValidImageUrl(url) {
    $("<img>", {
        src: url,
        error: function() { alert(url + ': ' + false); },
        load: function() { alert(url + ': ' + true); }
    });
}

IsValidImageUrl("http://goo.gl/GWtGo");
IsValidImageUrl("http://error");

相关:谢谢,我想做一些更实际的事情,并将逻辑封装到函数中,我如何从处理程序返回?+1获得一个很好的答案,但是你需要在jQuery版本中的
isvalidmageurl
调用中添加回调参数。注意,Thx。回调已经添加了Thx,但是如果我需要验证用户input?我怎么做?我需要知道表单是否有效b4 I submit。你会怎么做?我将使用jQuery Validate,但现在有一个简单的例子,你可以禁用submit按钮,直到检查完成。然后可以通过连接到文本字段的onchange事件来完成检查,用户在其中键入图像URL(如果是这样的话)-这完全取决于您的解决方案,总是有许多不同的方法来达到相同的目标,通常约束是您已经拥有并且不愿意更改的代码。我发现,在检查url是否确实是图像之前,它加载了文件的大部分,例如,一个大型mp4将在d之前几乎完全下载检测到它不是图像:/