2011-06-22 30 views
1

为了提高网站的性能,我把所有内容从db(不是很大)放到body数据标签中。即Chrome中的body标签限制和'I.E'

<body data-blog="<?php echo htmlspecialchars(json_encode($blog)); ?>"> 

该网站在本地主机上正常工作,我更新到现场服务器。

当我从这个网站访问数据时,它工作正常没有问题。当其他人访问该网站时出现问题。我测试了它使用Firefox 4.在我的电脑上它可以工作,但它不适用于任何其他电脑。它确实显示了body标签中的数据,但是简单的javascript无法显示内容而没有提供任何错误。

我不知道我该如何调试,以及可能存在的问题。下面是我用来显示身体标记数据的代码。

<body data-blog="<?php echo htmlspecialchars(json_encode($blog)); ?>"> 
     <script> 
$(document).ready(function() 
{ 
    $("#h_menu li").click(function(e) 
    { 

     var cid = $(this).attr('id'); 
     $("#contents").empty(); 
      var blog = $(document.body).data('blog'); 
      var tags = $.parseJSON(blog); 


      $("#tmenu").empty(); 


       for(var n in tags) 
       { 
        if(tags[n].cat_id == cid) 
         $('#tmenu').append("<li id='"+tags[n].id+"'>"+ tags[n].tag_name +"</li>"); 
       } 
    }); 
    $("#tmenu li").live("click",function() 
    { 
     var id = $(this).attr('id') ; 
     var blog = $(document.body).data('blog'); 
     var tags = $.parseJSON(blog); 
     $('#contents').empty().hide(); 
     $('#contents').html(tags[id-1].tag_content).fadeIn(600); 
    }); 
}); 
</script> 

我忘了提及它只能在FF4,铬,即不显示,即使从本地主机在我的电脑上的数据,所以我相信我必须做一些事情是错误的。但我不知道哪些事情,为什么它在我的Firefox中从现场工作?

+1

我想了解这是如何比隐藏的div中的内容更好的性能。似乎编码和解码以及元素创建会占用您保存的任何CPU周期。 – cHao

+0

如果我有一个隐藏的div内容,那么我仍然会使用javascript通过发送他的id来获取所需的数据,因此将数据放入隐藏的div和body标签需要相同的时间。 –

+0

@G莫尔维:你说过:“它需要同一时间”。除此之外,还有即时创建DOM元素的成本与让HTML解析器在页面加载时执行该操作的成本。那么性能增益在哪里? – cHao

回答

1

我认为将数据粘贴到某个隐藏元素而不是使用数据会更好。另外,数据是用jQuery编写和读取的,我不知道是否直接在html中写入数据博客将不会发生问题。