2011-03-10 41 views
0

我有一個切換器,它改變背景並使用jquery cookie腳本設置co​​okie。它看起來是這樣的:用cookie定義類的最佳方式

$(document).ready(function(){ 
var colors = $.cookie('colors'); 

    $(".box_2f2").click(function(){ 
     $('body').removeClass('c000 cfff c2f2'); 
     $('body').addClass('c2f2'); 
     $.cookie('colors','middleGrey'); 
     return false; 
     }); 
    $(".box_fff").click(function(){ 
     $('body').removeClass('c000 cfff c2f2'); 
     $('body').addClass('cfff'); 
     $.cookie('colors','white'); 
     return false; 
     }); 
    $(".box_000").click(function(){ 
     $('body').removeClass('c000 cfff c2f2'); 
     $('body').addClass('c000'); 
     $.cookie('colors','black'); 
     return false; 
     }); 
    if(colors == 'middleGrey') 
    { 
    $('body').addClass('c2f2'); 
    } 
    if (colors == 'white') 
    { 
    $('body').addClass('cfff'); 
    } 
    if(colors == 'black') 
    { 
    $('body').addClass('c000'); 
    } 
    }); 

這個問題是因爲未啓用類或一組,直到一段JavaScript加載內容緩存,頁面閃爍的defualt白色背景上顯示的Cookie樣式之前。什麼是更好的編碼方式,以便類在早期應用,而不必等待所有腳本?

回答

0

通過使用jQuery,您將依賴於要從緩存或Web服務器加載的腳本。不幸的是,當所有東西都被加載時,你會有那麼一點點閃光。

然而,另一方面,你可以有類似下面的應用剛剛開放使用普通的JavaScript網頁的BODY標籤後(不依賴於一個庫或框架):

<script type="text/javascript"> 
    document.body.style["display"] = "none"; 
</script> 

...然後只需將body的「display」CSS屬性設置回「block」,或者將您的首選項設置在jQuery腳本的最後。

0

這是常見的無風格標記問題。

您可以在div中將整個頁面框起來,首先將其標記爲「display:none」或「visibility:collapse」,然後將其顯示在腳本末尾。在腳本完成之前,該頁面將只是默認的瀏覽器背景,這可能需要一些時間。

考慮在腳本運行之前有一個「加載」圖形或啓動畫面(如果花費超過100-200ms),以便用戶知道發生了什麼,應該稍等一下。