2011-03-10 46 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),以便用户知道发生了什么,应该稍等一下。