问题描述
|
你们有一些技巧可以制作具有500多个行的大型表,并在Internet Explorer中更快地显示吗?
这就是我现在正在做的事情:
MySQL查询的结果返回500多个行,因此我使用while循环显示以下所有行:
echo \"<tr class=\'someMainClass\' bgcolor=\'\".$someBgColor.\"\'>\";
echo \"<td width=\'10px\' style=\'display: none;\' class=\'someClass\'>String</td>\";
echo \"<td class=\'someClassAgain andOtherClass\' title=\'someTitle\' >String again</td>\";
echo \"<td width=\'100px\' class=\'ClassAgain\' id=\'>another string</td>\";
echo \"<td width=\'100px\' class=\'ClassAgain\' title=\'title\'><input type=\'text\' value=\'and i input\'/></td>\";
echo \"</tr>\";
列表完成后,IE会冻结几秒钟,然后出现列表。除此之外,对<tr>
的任何悬停效果都非常缓慢。
我不确定为什么在IE中会导致这种慢动作,因为所有其他浏览器都能正常运行。
任何帮助将不胜感激。
解决方法
请记住,大多数IE用户并没有意识到自己的体验是低于标准的,他们已经习惯了。
最好的方法可能是在服务器端或通过JavaScript实现分页。
,不幸的是,这将是IE的问题...您最好以某种方式优雅地降级IE。也许只显示前50行并实现分页。
,将数据保存在javascript对象中,加载前20个(或许多加载页面),等待document.ready,然后开始使用javascript插入其余行。您甚至可以在滚动页面时插入行。
为了使它在这样的废话浏览器中看起来不错,需要进行大量的工作。
,无论您使用哪种浏览器,在一页上渲染500行都是一个坏主意,尽管与IE相比,它在Safari,Firefox和Chrome浏览器中可能会更好。从可用性的角度来看,这也是可怕的。
因此,更好的方法可能是重新考虑解决方案并引入分页。也许每页50行?或者其他的东西。
,尝试限制标记。删除所有的宽度,样式,id等属性,然后在加载HTML之后编写脚本以填充这些属性。报废样式和宽度,与类一起去。删除多余的空间。
,您可以隐含它仅显示您在滚动Ajax时所需的内容,类似此tut甚至这个tut的内容。
但实际上IE简直太糟糕了。对于一个简单的小型浏览器来说,拥有这么多的HTML就是那么多……当然,除非它不是垃圾。
,在某些情况下,非锚元素上的:hover伪选择器会使IE7和IE8变慢*。当不使用严格的doctype时,IE7和IE8将在锚点以外的任何元素上忽略:hover。当使用严格的doctype时,非锚点上的:hover可能会导致性能下降。
资源
,尝试在CSS中使用
table-layout: fixed
:
使用这种(快速)算法,表格的水平布局不依赖于单元格的内容。它仅取决于表格的宽度,列的宽度以及边框或单元格的间距。
这样可以加快初始渲染的速度,但是您必须手动管理列的大小。表格列的大小调整通常需要对表格进行全面扫描,如果没有足够的空间容纳所有列的自然宽度,则需要进行一些协商。使用固定的布局可以立即静态设置宽度,然后使所有单元格不管是否喜欢,都可以避免扫描和协商。