2013-03-29 41 views
0

我在這個站點有一個預加載器:http://exit.santamartastudio.es/它有時會隱藏preloader,有些則不會。我一直在尋找它但不知道它爲什麼失敗。jQuery Preload不消失

UPDATE(這裏是代碼):

$(document).ready(function(){ 
    setLoader(); 
    Here I load the rest of jquery 
}); 



$(window).load(function() { 
    hideloader(); 
}); 

功能:

// Setloader 
function setLoader() { 
    disable_scroll(); 
    $('body').css('overflow', 'hidden'); 
} 
// Hideloader 
function hideLoader() { 
    var windowWidth = $(window).width(); //retrieve current window width 

    $('#loader img').animate({ 
    left: '+=' + ((windowWidth/2) + 100) 
    }, 1000, 'easeOutExpo'); 

    $('#loader span').animate({ 
    left: '-=' + ((windowWidth/2) + 100) 
    }, 1000, 'easeOutExpo'); 
    setTimeout(function() { 
    $('#loader').fadeOut(800, 'linear', function(){ 
     enable_scroll(); 
     $('body').css('overflow', 'visible'); 
     $(this).hide(); 
    }); 
    }, 200); 
} 
+0

我們可以看到您的js加載預加載器嗎? – Vortex

+0

控制檯提供了兩個錯誤,一個是:'ReferenceError:找不到變量:hideloader'。嘗試在JavaScript的頂部使用''use strict';'以獲得最嚴格的錯誤,以便最好地回溯所有錯誤。 – 2013-03-31 10:32:31

回答

1

的問題是你的hideLoader()不能正確觸發。如果我在Safari上輸入此控制檯;

hideLoader(); 

..everything恰好,這意味着有什麼不妥的實際執行情況。

這裏的問題是代碼「太晚了」。你必須優先考慮一件事等待另一件事。現代瀏覽器加載腳本的速度非常快。這可能是負載甚至比要加載的功能還要早。我通常在DOM事件上獲得0.0ms0.1ms加載時間。

您可以嘗試將函數代碼放入jQuery函數中,並且確保嘗試將函數放在就緒狀態綁定(函數)之前。

除了太快的觸發就緒狀態,似乎沒有其他解釋。嘗試在頁面中進行大圖測試,這樣您的就緒狀態需要更長的時間,因此在這種情況下您可能永遠不會得到錯誤,因爲就緒狀態需要更長的時間才能完成。

+0

非常感謝您的回覆。 Perheps是我的英語,但我不明白你的意思。不明白「你可以嘗試把你的函數代碼放入一個jQuery函數中,並且確保嘗試將這些函數放在就緒狀態綁定(函數)之前。」我已將所有代碼放在小提琴中:[jsfiddle link](http://jsfiddle.net/demssite/KwgX3/)。提前致謝 –