使用500行以上的表时,IE速度会降低

时间:2011-05-24 20:18:56

标签: php jquery html css internet-explorer

你们有什么建议可以制作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中引起这种慢动作,因为所有其他浏览器都能正常工作。

非常感谢任何帮助。

8 个答案:

答案 0 :(得分:7)

请记住,大多数IE用户并不知道他们的体验是低于标准的,他们已经习惯了。

最好的方法可能是实现分页,无论是服务器端还是通过javascript。

答案 1 :(得分:3)

不幸的是,它将成为IE的一个问题...你最好以某种方式优雅降级IE。也许只显示前50行并实现分页。

答案 2 :(得分:2)

将数据保存在javascript对象中,加载前20个(或者多个占用页面),等待document.ready,然后用javascript开始插入其余行。您甚至可以在滚动页面时插入行。

在这样一个垃圾浏览器中做很多工作让它看起来很好。

答案 3 :(得分:2)

无论您使用什么浏览器,在一个页面上渲染500行都是一个坏主意,即使它在Safari,Firefox和Chrome中可能比IE更好。从可用性的角度来看,它也很可怕。

因此,更好的方法可能是重新考虑解决方案并引入分页。也许每页50行?或者其他的东西。

答案 4 :(得分:1)

尝试限制标记。删除所有宽度,样式,id等属性,然后在加载HTML后创建一个脚本来填充这些属性。废弃样式和宽度,与课程一起使用。删除多余的空格。

答案 5 :(得分:0)

您可以通过滚动浏览ajax来展示您需要的内容,例如this tut,甚至是this tut

但是真的IE很糟糕。拥有那么多HTML只是为了一个简单的小浏览器来处理...除非它当然不是垃圾。

答案 6 :(得分:0)

:非锚定元素上的hover伪选择器已知会使IE7和IE8在某些情况下变慢*。当不使用严格的doctype时,IE7和IE8将忽略:将鼠标悬停在除锚点之外的任何元素上。使用严格的doctype时:将鼠标悬停在非锚点上可能会导致性能下降。

Source

答案 7 :(得分:0)

尝试在CSS中使用table-layout: fixed

  

使用此(快速)算法,表格的水平布局不依赖于单元格的内容;它只取决于表格的宽度,列的宽度,边框或单元格间距。

这应该可以加快初始渲染速度,但您必须手动管理列大小。表列大小通常需要对表进行全面扫描,如果没有足够的空间来容纳所有列的自然宽度,则需要进行一些协商;使用固定布局通过立即静态设置宽度来避免扫描和协商,然后使所有单元格符合他们喜欢与否。