2011-11-15 94 views
2

我在IE 9中遇到了緩慢的腳本警告,同時在包含可滾動(即一些jscrollpanes內部)的頁面上使用jscrollpane覆蓋了一堆內容。在Firefox 8中,一切正常,頁面快速建立。在IE上花費很多時間(大約一分鐘)並摺疊/展開一個滾動區域(即顯示/隱藏)會導致頁面長時間凍結。顯然,這只是與IE結合的一個問題。jScrollPane導致緩慢的腳本警告

同樣的頁面,但沒有.jscrollpane()的添加在IE中與Firefox中一樣快。我使用jscrollpane 2.0.0.beta10和jquery 1.7,但它恰好與jquery 2.0.0.beta9和jquery 1.6相同。

+2

我很驚訝IE不會在所有網站上發出警告!我知道,壞笑話。 ''jscrollpane()'在'ready'事件處理函數中調用了嗎? ([jquery ready()](http://api.jquery.com/ready/)) –

+2

隨着一些調試,我找到了答案: 在jquery.jscrollpane.js中,函數initialiseVerticalScroll()使用一個非常好的選擇至少對於IE)來調整垂直滾動條的大小: container.find('>。jspVerticalBar> .jspCap:visible,> .jspVerticalBar> .jspArrow')。each( 尤其是當* container *包含很多元素時似乎麻煩IE。 修復很簡單,因爲* .jspVerticalBar *已知爲* verticalBar *: verticalBar.find('>。jspCap:visible,>。jspArrow')。 ( 同樣的問題/解決方案應適用於相應的單槓。 – user1047487

+1

你應該將它作爲答案發布並接受它。 –

回答

2

從註釋中發佈user1047487的答案,以便更容易找到(也添加一些格式)。

在jquery.jscrollpane.js,功能initialiseVerticalScroll()使用非常inperformant選擇(至少對於IE)來調整垂直滾動條:

container.find('>.jspVerticalBar>.jspCap:visible,>.jspVerticalBar>.jspArrow').ea‌​ch 

,這是特別慢時容器中含有大量的元件。

一個修復程序是很簡單的,由於這樣的事實,.jspVerticalBar已經稱爲verticalBar

verticalBar.find('>.jspCap:visible,>.jspArrow').each 

同樣的問題/解決方案應適用於對應的水平條。