画像のあるWebページがあります。ただし、ページが開いてから数秒後に画像が読み込まれます。画像が読み込まれていない間に読み込み中のgifを表示し、2秒ごとに画像が読み込まれたかどうかを確認したい。画像が読み込まれたら、読み込み中の gif を画像に置き換えたいと思います。私は次のコードを書きました:
<script language="javascript" type="text/javascript">
function checkImage(src) {
var img = new Image();
img.onload = function () {
// code to set the src on success
$('#img1').attr('src', 'imageOriginal.jpg');
$('#img1').removeAttr('width');
clearInterval(interval);
};
img.onerror = function () {
countErrors = countErrors + 1;
};
img.src = src; // fires off loading of image
}
var interval;
var countErrors = 0;
$(document).ready(function () {
$('#img1').attr('width', '620px');
interval = window.setInterval(function () { checkImage('imageOriginal.jpg?id=' + countErrors); }, 2000);
});
</script>
<img borderstyle="solid" bordercolor="black" borderwidth="1px" id="img1" alt="Screenshot" style="max-width:620px;" src="loading.gif" />
うまくいくこともあれば、うまくいかないこともあります。キャッシュを防ぐために id パラメータも追加しました。ただし、画像が既に読み込まれている場合でも、読み込み中の gif が表示されます。これを解決するにはどうすればよいですか?