2011-07-28 9 views
0

小さな画像(最後に添付された写真の例)に大きな画像を表示するには、次のスクリプトを使用しています。大きなイメージがサーバーからダウンロードされている間に、 'loading'イメージ(thisなど)を表示します。これはどのように達成できますか?画像のダウンロード中に「読み込み中」の画像を表示したい - Javascript

:私は同様の質問hereを求めているが、私は、次のコードにappend機能を適用することに成功しませんでした。助けてください。

<script type="text/javascript"> 
    function showIt(imgsrc) 
    { 
     var holder = document.getElementById('imageshow'); 
     var newpic= new Image(); 
     newpic.src=imgsrc; 
     holder.src=imgsrc; 
     holder.width = newpic.width; 
     holder.height=newpic.height; 
    } 
</script> 

<body> 
    /***on hover, xyz.jpg will be replaced by bigA.jpg and so on***/ 
    <img src="smallA.jpg" onMouseOver="showIt('bigA.jpg')"/> 
    <img src="smallB.jpg" onMouseOver="showIt('bigB.jpg')"/> 

    <img src="xyz.jpg" id="imageshow" />   
</body> 

enter image description here

答えて

2

イメージのロードイベントがあります。 image.srcが設定される前にロードハンドラを設定する限り、画像が正常に読み込まれたとき、または読み込み中に何らかのエラーが発生したときに通知を受け取る必要があります。私は次の画像がいつ表示されるかを知っているので、画像が指定された時間を1秒以上遅らせていれば待っているカーソル(あなたが望むようなアニメーションgif)を表示します。ユーザが何が起こっているかを知るための表示時間。

は一般的には、このような何かを行うことができます:あなたがイメージのロードを開始し、successHandlerが呼び出されたときにそれを隠すときに、このようなコードを使用して

function loadImage(url, successHandler, errorHandler) { 
    var myImg = new Image(); 
    myImg.onload = myLoadHandler;  // universally supported 
    myImg.onabort = myErrorHandler; // only supported in some browsers, but no harm in listening for it 
    myImg.onerror = myErrorHandler; 
    myImg.src = url; 

    function myLoadHandler() { 
     successHandler(myImg, url); 
    } 

    function myErrorHandler() { 
     if (errorHandler) { 
      errorHandler(url); 
     } 
    } 

} 

は、あなたが待機カーソルを表示することができます。

これらのイベントのリスナーが他にあった場合は、onload、onabort、onerrorの代わりにaddEventListenerまたはattachEventを使用する必要がありますが、リスナーが1つしかない場合はいずれかの方法があります。

希望の画像があらかじめわかっている場合は、後で使用できる画像をプリロードする方がユーザーの操作性が優れていることがあります。これにより、ブラウザのメモリキャッシュに格納され、必要に応じて即座に表示されます。 HTMLまたはJSのいずれかで画像をプリロードすることができます。 HTMLでは、必要なすべての画像のWebページにタグを挿入するだけです(ただしCSSで非表示にする)。これはpreloadImageURLs、アレイ内のすべての画像は、このように任意のを防止し、ウェブページの生活の中で、後に即座にプリロードして利用できることになります

// image URLs to preload 
var preloadImageURLs = [ 
    "http://photos.smugmug.com/935492456_5tur7-M.jpg", 
    "http://photos.smugmug.com/835492456_968nf-M.jpg", 
    "http://photos.smugmug.com/735492456_3kg86-M.jpg", 
]; 

var preloads = []; // storage for preloaded images 

function preloadImages() { 
    var img, i; 
    for (i = 0; i < preloadImageURLs.length; i++) { 
     img = new Image(); 
     img.src = preloadImageURLs[i]; 
     preloads.push(img); 
    } 
} 

を:JSでは、単に画像アレイを作成し、画像オブジェクトを作成します画像がロードされるのを待っている間にユーザーが遅れる明らかに、プリロードされた画像が実際に読み込まれるまでの時間は短いですが、通常、ユーザーがWebページとやりとりする前に起こる小さな画像のため、画像を使用するWebページの動的部分にもっと速く触れることができます。

0
<img id=access src=loading.gif> 

<script> 
window.onload=function(){ 

document.getElementById('access').src='access.jpg'; 

} 
</script> 

これが役立ちます。