あなたは画像のみのためのサーバの応答が適切なクロスオリジンリソース共有(CORS)ヘッダとContent-Lengthヘッダが含まれている場合、あなたが望むものを達成することができるようになります。
さらに、交換ループでajaxリクエストが実行されるのに必要な時間も考慮する必要があります。
以下は、最終的な解決策がどのように見えるかを示すjQuery(1.9.1)の例です。これを行うには、適切なCORSヘッダーを返すサーバーへのリンクを更新するか、ブラウザのセキュリティを無効にする必要があります。この例はjsfiddleにもあります。
var largeImage = "http://eoimages.gsfc.nasa.gov/images/imagerecords/49000/49684/rikuzentakata_ast_2011073_lrg.jpg";
var smallImage = "http://eoimages.gsfc.nasa.gov/images/imagerecords/81000/81258/kamchatka_amo_2013143_tn.jpg";
var urls = [largeImage, smallImage];
var maxSize = 5000000;
$.each(urls, function(index, value) {
conditionalMarkupUpdater(value, maxSize);
});
var onShouldBeViewable = function() {
alert('This is a small image...Display it.');
};
var onShouldNotBeViewable = function() {
alert('This is a large image...Only provide the url.');
};
var onError = function() {
alert('There was an error...likely because of CORS issues see http://stackoverflow.com/questions/3102819/chrome-disable-same-origin-policy and http://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/"');
};
function checkSize(url) {
var sizeChecker = new jQuery.Deferred();
var onSuccess = function (data, textStatus, jqXHR) {
var length = jqXHR.getResponseHeader('Content-Length');
if (!length) {
sizeChecker.reject("No size given");
} else {
sizeChecker.resolve(parseInt(length));
}
};
var onFailure = function (jqXHR, textStatus, errorThrown) {
sizeChecker.reject("Request failed");
};
$.when($.ajax({
type: "HEAD",
url: url
})).then(onSuccess, onFailure);
return sizeChecker.promise();
};
function conditionalMarkupUpdater(url, maxSize) {
$.when(checkSize(url)).then(
function (size) {
if (size <= maxSize) {
onShouldBeViewable();
} else {
onShouldNotBeViewable();
}
},
function (status) {
onError();
})
};
これは、PHPで簡単に行うことができます-http参照してください。//stackoverflow.com/questions/4635936/super-fast-getimagesize-in-php – ramr
どれjqueryので回答またはJavaScriptがはるかに私が推測いただければ幸いです! – ramr
可能な重複:http://stackoverflow.com/questions/1484303/get-size-of-file-requested-via-ajax – lightbricko