2009-04-08 42 views
3

我有一个相当复杂的用户界面。然而,为了这个问题的目的,我们假设有一个默认呈现UILayout1的HTML表格(比如默认模式)。有一个用户可以用来在默认模式和预览模式之间切换的按钮(UILayout2)UpdatePanel - 关于如何避免UI中的闪烁的任何想法? - ASP.NET/jQuery的

当处于预览模式时,表格中有一些不可见的列,并且存在行的重新排序。我在加载时使用JS(jquery)来检查模式并相应地改变它。

表格和切换按钮位于UpdatePanels中。

功能上,一切都按预期工作。但是,当用户在默认和预览模式之间切换或反之亦然时,表格默认呈现的时间间隔很短,然后JS运行以进行更改。

这会导致UI体验降级。有没有创造性的方法来避免这种“闪烁”?

回答

1

可以使用的DIV或者不使用更新面板在你的UI生成使用其他

1

任何概念的问题很可能是你的代码是在负载下运行。我假设你正在使用负载上运行代码的标准jQuery方法,而不是使用窗口的onload事件。在任何情况下,即使使用jQuerys $(document).ready(...),如果您有许多其他JavaScript文件需要加载,速度也会太慢,因为只有加载了所有javascript包含的文件之后,才会在文档上触发.ready事件。

您应该能够解决此问题通过包含您的代码只包含HTML文件在您的网页的表格后修改表,而不是在负载运行它即要确保你不$(document).ready(...);

把它包

对于这种方法的工作,您将需要修改包含在页面前面的表的代码所需的所有javascript。

如果您还有其他非必要的javascript文件,您应该尝试在后面的页面中包含它们。

我不是100%确定更新面板内部如何影响它 - 您将需要确保您的代码在updatepanel更新时被重新触发,但我相信这应该都是自动发生的。

+0

UpdatePanels倾向于向页面添加大量膨胀,并且不是特别快。如果可以的话,最好避免使用它们。 – 2009-04-08 23:57:52

0

想必你的用户界面是由CSS控制的?如果修改适用于您的预览你的CSS规则

if (previewMode) { 
    document.documentElement.className = 'preview'; 
} 

那么你也许可以通过在你的JavaScript的起点或在你的HTML的<头>添加类似这样摆脱闪烁模式,以反映具有类=“预览” HTML元素的东西,如:

.preview table .defaultMode { 
    display:none; 
} 

希望你的表应该正确渲染第一次,也不会需要重新绘制。