ユーザーがダウンロードするにつれて、より高品質の画像を徐々に表示している状況があります。
ロジックは次のようになります。
3 画像フォーマット: 低品質 (5-8kb)、大 (60-80kb)、高解像度 (150-250kb)。
- 大きな写真または高解像度の写真がキャッシュされているかどうかを確認します。キャッシュされている場合は、最初にキャッシュされたバージョンと FINISH を表示します。
- 低品質の画像を読み込んでいない場合は、すぐにユーザーに表示します。
- 大きな画像を事前にキャッシュし、読み込まれたら img.src を変更します。
- ユーザーのウィンドウ サイズが特定のしきい値を超えているかどうかを確認し、高解像度の画像をプリキャッシュし、読み込み時に img.src を変更します。
すべてが美しく機能します。
ただし、高解像度のダウンロード中にユーザーがクリックして次の画像に移動すると、前の高解像度の画像が読み込まれたときにイベントがオンロードで発生するように設定されているため、もちろんすべてが台無しになります。
基本的に onload イベントは、ユーザーがクリックして次の画像に移動した後に発生します。つまり、新しい画像が古い画像に置き換えられます。
私がする必要があるのは、ユーザーが次の写真に変更するたびに機能をキャンセルできることです。
関数は次のようになります。
(function(index){
$(highresimage).imagesLoaded(function(){
setTimeout(function(){
self.cache.image = $(highresimage).appendTo(self.cache.imagewrap);
self.cache.photos[index]['highresloaded'] = true;
setTimeout(function(){
self.cache.imagewrap.children('img').first().remove();
self.cache.image.css({
'left':'',
'position':'relative'
});
},10);
},200);
});
})(index);
そのため、プログラムでキャンセルできるようにする必要があります$(highresimage).imagesLoaded(function(){});
これを達成する最良の方法は何ですか?
前もって感謝します。
編集:私の例では、実際に画像を複製し、srcを変更し、それをdomに追加し、数ミリ秒残してから古い画像を削除していることに注意してください。これは、高解像度画像の src を変更するとフラッシュが発生する Firefox のバグによるものです。恐ろしいことですが、醜いタイムアウトを削除すると、Firefox でのユーザー エクスペリエンスが大幅に悪化します。彼らは理由があってそこにいます。:P