diff --git a/src/utils.js b/src/utils.js index 7c257fc63..bbef45476 100755 --- a/src/utils.js +++ b/src/utils.js @@ -46,11 +46,20 @@ var isImage = function (url) { var deferred = new $.Deferred(); - $("", { - src: url, - error: deferred.reject, - load: deferred.resolve - }); + var img = new Image(); + var timer = window.setTimeout(function () { + deferred.reject(); + img = null; + }, 3000); + img.onerror = img.onabort = function () { + clearTimeout(timer); + deferred.reject(); + }; + img.onload = function () { + clearTimeout(timer); + deferred.resolve(img); + }; + img.src = url; return deferred.promise(); }; @@ -86,12 +95,12 @@ } $obj.html(x); _.forEach(list, function (url) { - isImage(url).then(function (ev) { + isImage(url).then(function (img) { var prot = url.indexOf('http://') === 0 || url.indexOf('https://') === 0 ? '' : 'http://'; var escaped_url = encodeURI(decodeURI(url)).replace(/[!'()]/g, escape).replace(/\*/g, "%2A"); var new_url = ''+ url + ''; - ev.target.className = 'chat-image'; - x = x.replace(new_url, ev.target.outerHTML); + img.className = 'chat-image'; + x = x.replace(new_url, img.outerHTML); $obj.throttledHTML(x); }); });