我正在研究創建簡單圖表的JavaScript應用程序,並且在Internet Explorer(版本8)中有一些性能問題。執行單擊並拖動鼠標操作時,Internet Explorer會凍結。如何檢測這個原因?
該應用程序可以被用於繪製的圖上線(參見圖)。繪製線有兩個主要的處理程序。 ONMOUSEUP事件選取用戶的點擊,表示用戶想要在線上放置一個點並開始一個新的線段(線由多個線段組成)。
一個的OnMouseMove處理程序繪製一個淡出的片段作爲視覺幫助到用戶,而他是畫線。
請參考這些圖像用於線繪製過程的屏幕截圖: http://imgur.com/TuueR http://i51.tinypic.com/fxjqf.jpg
如果用戶點擊鼠標(鼠標按下),但犯規釋放它,而是開始拖動鼠標左右,IE完全凍結。一段時間後,它會解凍並照常進行。
上的Chrome瀏覽另一方面,處理此道(同時拖動操作正在發生的事情,鼠標移動處理器工作的工作,該點的ONMOUSEUP事件觸發後僅放置。
我的理論是資源管理器可能是單線程的,在這種情況下,他會拾取MOUSEMOVE事件,但只有在ONMOUSEUP事件完成後才執行它們(這意味着在拖動操作期間本質上沒有任何操作),但我不知道如何檢查如果這是真的,或如何解決它。
我做了一些分析與IE8內置的JS探查,並且這兩種處理器都堪稱倍於正常的量,有沒有函數被調用數千次會導致凍結。探測器在IE被凍結時被凍結,並且不會輸出任何東西,直到解凍,之後結果看起來就像沒有凍結一樣。
編輯:這裏是根據的dynaTrace分析器工具時間軸:http://i51.tinypic.com/348sxty.jpg。
你創建的圖表和褪色正常的HTML元素線? – Esailija
@Esailija是的,他們大多是跨度元素。點具有背景圖像,而線是具有頂部或右邊界的透明元素。 – skali