iOS 6 Mobile Safari使用选择元素缓慢渲染大表

时间:2012-12-06 15:01:27

标签: html performance ipad ios6 mobile-safari

我们正在构建一个Web应用程序,其中包含一个页面,用户可以在其中看到一个可编辑项目的大表。此表具有控制每行以向上/向下移动行以及删除行的选项。每行还有两个选择元素。

在极端情况下,这个表可能包含大约200行,当我们有很多行时,我们会遇到严重的性能问题。页面向上和向下滚动速度非常慢,我们在屏幕上看到“checker-boxing”,删除一行需要大约30秒,有时甚至更多!上下移动需要相似的时间,页面通常无法使用。

我们一直在努力缩小问题的确切范围,我们非常确定它是否与表中的select元素有关 - 如果我们从行中删除它们;滚动是完美的,上下移动约1秒,删除行~7秒。

如果我们从200行表的底部删除一行,那么它几乎是即时的。

似乎问题与页面上的CSS有关,当我们运行探查器时,重新计算样式大约需要3秒。

该页面在其他浏览器中表现良好,任何帮助/知识都会很棒。

由于

2 个答案:

答案 0 :(得分:0)

我们在iOS 6的Web App中有几个表,其中一些表包含几百行只读文本,但有些也包含SELECT元素。

将表格布局设置为固定会对性能产生巨大影响。一些较大的表在默认动态表宽度计算中存在主要的渲染问题,到目前为止我们还没有克服这些问题。当一行包含复选框时尤其如此。

有些表格没有渲染最后一行,或者表格在底部附近被切断,依此类推。

我们使用一个特殊的样式表作为纵向模式,它改变了TABLE和TD元素的宽度,并完全删除了一些列。

这项工作非常好,到目前为止没有引起任何副作用或问题。

对于滚动,我们使用围绕表格的特殊DIV元素,该元素具有已定义的高度并使用“-webkit-overflow-scrolling:touch”。即使是最大的表格,大约有850个条目滚动,也没有任何性能损失或闪烁。

你什么时候渲染表?在页面渲染/准备/加载事件期间? 您是使用“innerHTML”赋值还是在逻辑中创建DOM树?

答案 1 :(得分:-1)

table-layout:fixed;设置为表格(在样式表中)中的样式属性可能会使响应速度更快。浏览器必须进行较少的计算,缺点是您必须自己指定列宽。