イメージオブジェクトが作成されたときに、「完全」プロパティまたは「onload」メソッドを使用していつ完全にロードされたかを知ることができます。その後、このイメージはある時間を使用して処理(サイズ変更など)大きなファイル。
ブラウザが終了したら、のプロセスイメージをロードした後に、を入力してください。
編集:例では、「完全な」メッセージと画像の外観の間に時間差があることが分かります。これを避けたいと思います。
"onloadイベント" 方法ウッシング例: "完全な" プロパティを使用して画像を読み込んだ後、ブラウザが画像の処理を終了するタイミングを知るには?
var BIGimage;
\t putBIGimage();
\t function putBIGimage(){
\t \t BIGimage=document.createElement("IMG");
\t \t BIGimage.height=200;
\t \t BIGimage.src="http://orig09.deviantart.net/5e53/f/2013/347/f/d/i_don_t_want_to_ever_leave_the_lake_district_by_martinkantauskas-d6xrdch.jpg";
\t \t BIGimage.onload=function(){waitBIGimage();};
\t }
\t function waitBIGimage(){
\t \t \t console.log("Complete.");
\t \t \t document.body.appendChild(BIGimage);
\t }
例:
var BIGimage;
\t putBIGimage();
\t function putBIGimage(){
\t \t BIGimage=document.createElement("IMG");
\t \t BIGimage.height=200;
\t \t BIGimage.src="http://orig09.deviantart.net/5e53/f/2013/347/f/d/i_don_t_want_to_ever_leave_the_lake_district_by_martinkantauskas-d6xrdch.jpg";
\t \t waitBIGimage();
\t }
\t function waitBIGimage(){
\t \t if (!BIGimage.complete){
\t \t \t console.log("Loading...");
\t \t \t setTimeout(function(){
\t \t \t \t waitBIGimage();
\t \t \t },16);
\t \t } else {
\t \t \t console.log("Complete.");
\t \t \t document.body.appendChild(BIGimage);
\t \t }
\t }
EDIT:ありがとう@のKaiidoの応答を私 画像処理を待つためのこの解決策を作った。
var imagesList=["https://omastewitkowski.files.wordpress.com/2013/07/howard-prairie-lake-oregon-omaste-witkowski-owfotografik-com-2-2.jpg",
\t \t "http://orig03.deviantart.net/7b8d/f/2015/289/0/f/0ffd635880709fb39c2b69f782de9663-d9d9w6l.jpg",
\t \t "http://www.livandiz.com/dpr/Crater%20Lake%20Pano%2016799x5507.JPG"];
var BIGimages=loadImages(imagesList);
onLoadImages(BIGimages,showImages);
function loadImages(listImages){
\t var image;
\t var list=[];
\t for (var i=0;i<listImages.length;i++){
\t \t image=document.createElement("IMG");
\t \t image.height=200;
\t \t image.src=listImages[i]+"?"+Math.random();
\t \t list.push(image);
\t }
\t return list; \t \t
}
function showImages(){
\t loading.style.display="none";
\t for (var i=0; i<BIGimages.length;i++){
\t \t document.body.appendChild(BIGimages[i]);
\t }
};
function onLoadImages(images,callBack,n) {
\t if (images==undefined) return null;
\t if (callBack==undefined) callBack=function(){};
\t else if (typeof callBack!="function") return null;
\t var list=[];
\t if (!Array.isArray(images)){
\t \t if (typeof images =="string") images=document.getElementById(images);
\t \t if (!images || images.tagName!="IMG") return null;
\t \t list.push(images);
\t } else list=images;
\t if (n==undefined || n<0 || n>=list.length) n=0;
\t for (var i=n; i<list.length; i++){
\t \t if (!list[i].complete){
\t \t \t setTimeout(function(){onLoadImages(images,callBack,i);},16);
\t \t \t return false;
\t \t }
\t \t var ctx = document.createElement('canvas').getContext('2d');
\t \t ctx.drawImage(list[i], 0, 0);
\t }
\t callBack();
\t return true;
}
<DIV id="loading">Loading some big images...</DIV>
最初の例では予期した結果が返されませんか? – guest271314
最初の方法が好ましい - それはあなたのためにうまくいきません –
例では、 "完全な"メッセージと画像の外観の間に遅れを見ることができます、私はこれを避けたいです。 –