2009-04-08 53 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; 
} 

希望你的表應該正確渲染第一次,也不會需要重新繪製。