Javascript 图片网址验证

标签 javascript image function url verify

我需要验证图像 url 以检查该 url 是否是以下任何扩展名的图像:- jpeg、jpg、gif、png。示例:- 当我们验证此网址时 http://www.example.com/asdf.jpg它应该给我们真正的值(value)和像这样的 url http://www.example.com/asdf.php应该返回 false。我们如何在 javascript 中执行此操作,我还想检查 url 的内容类型。这样我们就可以判断该 url 是否为图片。

最佳答案

您可以使用这样的正则表达式来检查文件扩展名:

function checkURL(url) {
    return(url.match(/\.(jpeg|jpg|gif|png)$/) != null);
}

这会检查 url 是否以这四个扩展名中的任何一个结尾。

我知道客户端中的 javascript 无法验证与网页不在同一域中的 URL 的内容类型,因为您不能在网页域之外使用 ajax。据我所知,您必须将 URL 发送到服务器进程并让它下载图像、获取内容类型并将其返回给您。

但是,您可以使用如下函数检查图片标签是否可以加载 URL:

function testImage(url, callback, timeout) {
    timeout = timeout || 5000;
    var timedOut = false, timer;
    var img = new Image();
    img.onerror = img.onabort = function() {
        if (!timedOut) {
            clearTimeout(timer);
            callback(url, "error");
        }
    };
    img.onload = function() {
        if (!timedOut) {
            clearTimeout(timer);
            callback(url, "success");
        }
    };
    img.src = url;
    timer = setTimeout(function() {
        timedOut = true;
        // reset .src to invalid URL so it stops previous
        // loading, but doesn't trigger new load
        img.src = "//!!!!/test.jpg";
        callback(url, "timeout");
    }, timeout); 
}

此函数将在未来某个时间使用两个参数调用您的回调:原始 URL 和结果(“成功”、“错误”或“超时”)。你可以在几个 URL 上看到这项工作,有好有坏,在这里:http://jsfiddle.net/jfriend00/qKtra/


而且,由于现在是 Promises 时代,这里有一个返回 promise 的版本:

function testImage(url, timeoutT) {
    return new Promise(function (resolve, reject) {
        var timeout = timeoutT || 5000;
        var timer, img = new Image();
        img.onerror = img.onabort = function () {
            clearTimeout(timer);
            reject("error");
        };
        img.onload = function () {
            clearTimeout(timer);
            resolve("success");
        };
        timer = setTimeout(function () {
            // reset .src to invalid URL so it stops previous
            // loading, but doesn't trigger new load
            img.src = "//!!!!/test.jpg";
            reject("timeout");
        }, timeout);
        img.src = url;
    });
}

还有一个 jsFiddle 演示:http://jsfiddle.net/jfriend00/vhtzghkd/

关于Javascript 图片网址验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9714525/

相关文章:

javascript - Fullcalendar 在拖放时复制事件

javascript - Angular : Bootstrap giving error in console

c# - 将图像复制并重命名到 Windows 8 应用程序上的文件夹

java - 在 Java 中使用函数指针作为简单的命令行解释器

c - 为什么模运算符不能在 C 中的 printf 函数中工作?

javascript - 在 forEach 中连续进行 AJAX 调用 - 为什么我看不到结果?

javascript - Jquery 悬停条件鼠标移出时滞后

javascript - JQuery:图像库向下滑动图像并在 src 中淡入淡出

java - 将图像转换为文本 - Java

c - void * 函数指针