检测错误/禁止的图像链接

时间:2016-03-08 11:37:20

标签: javascript image media

有没有办法快速从js提供的链接中获取图像并查看它是否有效?即查看它是否链接到像example这样的普通图像,或者当某些网站将您重定向到其他页面而不是图像时捕获案例。

2 个答案:

答案 0 :(得分:2)

为了简单检查它是否是图像链接,您可以使用它。

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

如果您想要一种防弹方式来检查图像是否是合法图像,您可以使用它。

http://jsfiddle.net/jfriend00/qKtra/

JS:

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;
        callback(url, "timeout");
    }, timeout); 
}


function record(url, result) {
    document.body.innerHTML += "<span class='" + result + "'>" + 
        result + ": " + url + "</span><br>";
}   

testImage("http://photos.smugmug.com/photos/344291068_HdnTo-Ti.jpg", record);

testImage("http://photos.smugmug.com/photos/invalid344291068_HdnTo-Ti.jpg", record);

testImage("http://www.cnn.com/foo.jpg", record);

testImage("https://www.google.com/images/srpr/logo3w.png", record);

CSS:

.success {
    color: green;
}
.error, .timeout {
    color: red;
}

答案 1 :(得分:2)

这是使用jquery的一个技巧:

$("<img/>")
    .on('load', function() { console.log("image loaded correctly"); })
    .on('error', function() { console.log("error loading image"); })
    .attr("src", "image_url_here");

在这里找到解决方案: Check if an image is loaded (no errors) in JavaScript