0

我試圖在UpdatePanel中放置一個用戶控件。 當顯示控件時,在文本框內部打字時在IE中有很大的延遲(6 & 8)。 FireFox具有出色的性能。不僅打字,而且滾動等都會經歷很長的延遲,持續幾秒鐘。IE瀏覽器在updatepanel部分更新後變慢

usercontrol(s)包含相當多的javascript函數,它們使用ScriptManager.RegisterScriptBlockRegisterStartupScript functions重新註冊。

有沒有人有任何想法,爲什麼打字變得如此緩慢?我相信由於jQuery函數的重新註冊,它必須處理內存泄漏問題。但我無法找到它的來源。

Regards

回答

0

JavaScript自己寫的或其他人或可靠框架的一部分?

通用提示: - 降低過程和函數調用 - 事件委託 - 緩存和重新使用jQuery的結果(特別是IE),只有重新查詢當你知道DOM改變。 - 避免遞歸,除非你知道如何避免所有容易發生內存泄漏的做法。 - 關於表單輸入,儘可能使用「焦點」和「模糊」事件,而不是「按鍵」。 - 當使用'按鍵'事件時,去抖,去抖,去抖! (谷歌它)

使用: - Firebug分析器,看看哪些函數被調用和多少次,這表明你需要減少什麼。

+0

感謝您的擁抱。我們實際上擁有各種各樣的javascript,我自己的,由同事編寫並嵌入我們框架團隊編寫的自定義控件中。我將看看委託事件和緩存(對於updatepanel之外的所有內容)。 – Ronald 2010-08-03 13:38:51

+0

您使用Firebug分析器的建議幫助了很多。我不知道這個功能。我們發現代碼看起來像$('body')。keypress(function(){});.每次我們輸入一些內容時,這導致了大約50次調用。再次感謝您的好建議。 – Ronald 2010-08-04 13:21:03

+0

$(body).keypress(..)is imo。事件轉授的反模式,因爲它是一個隨時可以觸發的聽衆。將監聽器綁定到最接近可能的祖先(即捕獲表單內的事件的表單元素或捕獲列表項的事件的ul元素)。此外,請考慮延遲附加事件偵聽器,何時需要它們,而不是始終onDomReady。 – BGerrissen 2010-08-05 20:30:05