JS 画像のプリロードの簡単な例
関数loadImage( url, callback) {
if(url!='null') {
var img = new Image();
img.src = url;
if(img.complete) {
callback(img);
else { ;
> }
}
loadImage(pic_url,loadImage);
もう一つの詳細例
js を介した DOM の操作は、現在のページの HTML 要素の非同期読み込みを実現するためによく使用されます。Image オブジェクトについて少し説明します。
例を見てみましょう:
コードをコピーします
コードは次のとおりです: < ;input type= "button" name="" value="画像の読み込み" onclick="addImg('tt.jpg')" /> function addImg(isrc)
{
var Img = new Image();
Img.src = isrc;
Img.onload = function ()
{
document.body.appendChild(Img);
}
}
//-->
ページ上記のコードが含まれています。「tt.jpg」は開くときには読み込まれませんが、ボタンをクリックすると読み込まれます。読み込みが完了すると、onload イベントがトリガーされ、ページに表示されます。
「tt.jpg」画像を初めてロードすると、正常に実行されます。ボタンをクリックして画像を読み込んで表示します。このボタンを繰り返しクリックするとどうなりますか?
IEやOperaでは、初回読み込み時以外は正常に表示されるのですが、再度クリックしても無反応となり、更新しても同様です。 「onload」イベントは 1 回だけトリガーされますか?キャッシュ機構なのでしょうか?
FFやChromでは、クリックするたびに画像が1枚読み込まれます。
少し変更します:
コードをコピーします
function addImg(isrc)
{
var Img = new Image();
Img.onload = function ()
{
document.body.appendChild( Img) ;
}
Img.src = isrc;
}
//-->
実行してみると、何かおかしなことが起こっていることがわかりました。すべてのブラウザは一貫性があり、クリックごとに 1 つの画像を読み込みます。その理由は何でしょうか?
onload イベントは、IE と Opera の実行中に 1 回だけトリガーされるわけではないことがわかります。
Image オブジェクトのいくつかの属性、complete、readyState (IE 専用の値 [未初期化、complete]) について考えてみましょう (キャッシュが効果に影響しないように、イメージ名を変更してください。)
コードをコピーします