現在、あなたはいくつかの小さなことを間違っています:
/// this first line basically says run my contents when the DOM is ready
$(function () {
/// this second line says run my contents when the window is fully loaded
/// but you are enabling this only after the DOM has loaded. Depending on
/// the browser these two events can fire in either order so you may find
/// situations where nothing would happen.
$(window).load(function () {
/// then you hide your image div
$('#images-loading').css({
visibility: 'hidden'
})
/// but then ask it to fade in
.fadeTo(200, function () {
});
});
});
上記をより良い方法で書くと、次のようになります。
/// once the page has fully loaded - i.e. everything including
/// images is ready - then hide our loading message. Set this
/// listener first as it could fire at any time.
$(window).load(function () {
$('#images-loading').stop().fadeOut(200);
});
/// as soon as the DOM is ready, show our loading message
/// the DOM event should fire before window load
$(function(){
/// if you are learning it is far better to name your functions
/// and then reference them where they are needed. It makes things
/// easier to read.
function whenFadeIsComplete(){
alert('fade in complete');
}
/// rather than hide with setting style directly, use jQuery's own hide
/// function. Better still, use a CSS class directly on your #images-loading
/// element that implements `display:none;` or `opacity:0;` - this will
/// render more quickly than JavaScript and mean you avoid your
/// loading div flickering into view before the fade in starts.
$('#images-loading').hide().fadeTo(200, whenFadeIsComplete);
})
上記を試すと、ページを強制的に更新したときにのみ機能するという問題が解決する場合があります。ただし、画像がブラウザにキャッシュされている場合は、読み込み中のメッセージが表示されないことがあります(ページの読み込みが速すぎるため)。ブラウザを強制的に更新すると、(ほとんどのブラウザで)キャッシュがクリアされ、メッセージが表示されます。再び表示する時間。