使用JQUery检查图像URL的字符串和存在(如果有效)的真实方法是什么?

Alp*_*per 1 javascript url jquery image

我正在开发一个数据库驱动的Web应用程序 并且有一个单元格,用户可以输入任何图像URL字符串作为输入.
是否有一个函数,图像url/字符串分隔,如果是图像,检查是否存在.
我需要这样做,如果用户输入图像网址,那么图像将显示到应用程序(如果存在),否则如果用户输入字符串(消息),则消息将被放入应用程序.

仅供演示;

function check_imageornot(data){
    ...........
    if -> image && exist -> return 'image_ok';
    if -> image && not_exist -> return 'image_no';
    if -> string -> return 'string';
    }
}
Run Code Online (Sandbox Code Playgroud)

注意:此函数将被放入.js文件中,因此需要Javascript/jQuery方式(也可以在JS/jQuery中使用正则表达方式...)

小智 7

只是一个小小的修改:

if (/(jpg|gif|png|JPG|GIF|PNG|JPEG|jpeg)$/.test(input)){ // image url as input
Run Code Online (Sandbox Code Playgroud)

这样,它将了解查看文件扩展名的不同方式.

  • 使用不区分大小写的正则表达式 /(jpg|gif|png|jpeg)$/i 来捕获像“JpEg”这样的情况可能更好 (2认同)

Kev*_*n O 5

我知道这是我朋友的一篇老文章,但这是我在网站上使用的代码,用于检查图片网址是否有效:

function is_image(url,callback,errorcallback) {

var img = new Image();
if (typeof(errorcallback) === "function") {
    img.onerror = function() { errorcallback(); }
} else {
    img.onerror = function() { return false; }
}
if (typeof(callback) === "function") {
    img.onload = function() { callback(); }
} else {
    img.onload = function() { return true; }
}
img.src = url;

}
Run Code Online (Sandbox Code Playgroud)

从字面上看,该函数正在执行的操作是检查是否加载了图像。例如,如果url为“ http://www.google.com ”,则该函数将返回错误(因此它将运行放置在中的函数img.onerror()),因为google的首页不是图像,而是html文件。由于此函数需要url发送回信息,因此它是一个异步函数,这意味着您不能依赖该函数来遵循Javascript的流程,就像发送AJAX请求一样。因此,无论您希望函数之后运行什么代码,都必须将其作为函数的第二个参数。因此,例如,您的代码可以如下所示:

var imagelink = "http://www.google.com";
is_image(imagelink,function(){ 
    alert("This is an image!"); 
},function(){ 
    alert("This is not an image!")
});
Run Code Online (Sandbox Code Playgroud)

因此,如果链接是图像,则会弹出一个窗口,显示“这是图像!”,否则,窗口将显示“这不是图像!”。即使扩展名不是.jpg或其他任何形式,此功能也将始终有效。