我有一个复杂的用户界面。但是,出于这个问题的目的,我们假设有一个HTML表默认呈现UILayout1(比如默认模式)。有一个按钮,用户可以使用该按钮在默认模式和预览模式之间切换(UILayout2)
在预览模式下,表格中有一些列是不可见的,并且有行的重新排序。我在加载时使用JS(jquery)来检查模式并相应地进行更改。
表格和切换按钮位于UpdatePanels中。
从功能上讲,一切都按预期工作。但是,当用户在默认模式和预览模式之间切换时,反之亦然,有一个短的时间间隔,表在默认情况下呈现,然后JS运行以进行更改。
这会导致UI体验降级。有没有创造性的方法来避免这种“闪烁”?
答案 0 :(得分:1)
您可以使用DIV或在UI生成中不使用更新面板使用任何其他概念
答案 1 :(得分:1)
问题可能是您的代码在加载时运行。我假设您使用标准的jQuery方法在加载时运行代码,而不是使用窗口的onload事件。在任何情况下,如果你要加载很多其他javascript文件,即使使用jQuerys $(document).ready(...)
也会太慢,因为在所有javascript包含加载之前,.ready事件不会在文档上触发。
您应该能够解决这个问题,方法是在页面的html之后包含修改表的代码,而不是在加载时运行它,即确保不将其包装在{{1}中}
要使这种方法起作用,您需要拥有修改页面前面所包含的表格的代码所需的所有javascript。
如果您包含其他非必要的javascript文件,则应尝试稍后在页面中包含它们。
我不是100%确定更新面板内部会如何影响它 - 您需要确保在更新面板更新时重新触发代码,但我相信这一切都应该自动发生。
答案 2 :(得分:0)
大概你的UI是由CSS控制的?您可以通过在JavaScript开头或< head>中添加类似内容来摆脱闪烁。你的HTML:
if (previewMode) {
document.documentElement.className = 'preview';
}
然后,如果您修改适用于预览模式的CSS规则,以将具有class =“preview”的HTML元素反映为:
.preview table .defaultMode {
display:none;
}
希望你的桌子第一次正确渲染,不需要重新绘制。