2011-03-09 22 views
0

升級到jQuery 1.5.1後,FireFox中出現Unresponsive Script警告。jQuery 1.5.1與原型導致FireFox中的腳本無響應

沒有其他改變,只有jQuery從1.4.2升級到1.5.1。如果我調試腳本,並查看堆棧跟蹤我可以看到,導致反應遲鈍腳本代碼非常簡單:

$("div.activityItems[gid='-1']").children().attr("disabled", "disabled") 

有其他人遇到類似的問題,關於jQuery的1.5.1?

UPDATE

我已經局部衝突是JQuery的1.5.1和原型之間。將Prototype升級到v.1.7會導致明顯的衝突:

$(document.body).keydown is not a function 
$.fn is undefined 

解決方法的任何想法?

+0

該div有多少個孩子?他們都是可以採用「禁用」屬性的元素嗎?注意:這可能是不相關的,但是使用自發的,像'gid'這樣的無效屬性,我個人會避免。 – RoToRa 2011-03-09 16:59:30

回答

0

重新更新:

記住這兩個庫定義函數$。您是否使用jQueries noConflict()?我不熟悉Prototype,所以你應該檢查它是否有類似的功能。

它可能是顯而易見的,但我會說:不要使用這兩個庫。它們基本上具有相同的功能,因此您不僅要求提出問題,而且如果您同時使用這兩個功能,還會使頁面膨脹。

+0

是的,我對原型庫做了一些醜陋的修改,用$ p( - 修正了衝突。不幸的是,我們有一些使用Prototype的遺留代碼,我們不想使用noConflict,因爲這需要我們以取代所有我們不想做的$()選擇器 修改過的原型技巧可以解決衝突,現在我們只有幾件事停止工作,但應該可以修復。 基本上,我們想擺脫原型,但我們僅限於爲即將發佈的版本進行破壞控制。 – MartinHN 2011-03-10 14:21:37

0

堆棧跟蹤在這種情況下並不真正有用,因爲「無響應的腳本」意味着JavaScript運行時間過長,從而導致瀏覽器無法響應。

因此,您需要檢查您的代碼長時間甚至無限循環,過度的遞歸深度以及可能需要很長時間才能執行的類似事情。

+0

好的,但代碼沒有改變。在jQuery 1.4.2中工作,在1.5.1中不起作用。 – MartinHN 2011-03-09 14:42:22

+0

然後一些更多的代碼會很有用......甚至是jsfiddle上的一個測試用例。 – ThiefMaster 2011-03-09 14:50:04

+0

我試圖在jsFiddle重現,但如果我能這個問題當然會更徹底。我只是想問問是否有其他人經歷過類似的事情。 – MartinHN 2011-03-09 15:05:08

相關問題