我正在爲客戶端重新構建一個頁面,並且我在頁面上實現了jQuery代碼時遇到了一些問題。
有一個使用Prototype的彈出式燈箱,它在頁面加載時出現,然後在頂部和右側放置了選取框/滾動條,我使用了jQuery。我真的不確定導致錯誤的原因。
我對jQuery的noConflict很熟悉,但我已經在本頁面上嘗試了幾乎所有的變體,並且仍然出現錯誤 - 幾秒鐘後,停止了marquees - 並且IE顯示「頁面錯誤」對話框,參考線464(「陣列長度必須分配一個有限的正數」)。
這裏是頁:-link由作者 -
去除。這裏是的prototype.js:-LINK由作者 -
刪除我完全不知道是什麼原因造成這個錯誤,JavaScript是不是我的最強側。jQuery和原型 - 碰撞導致破壞功能
回答
當我第一次看到這個錯誤時,我一直在尋找更通用的「Prototype + jQuery」錯誤,當時我應該一直在尋找特定於我正在處理的確切問題的解決方案。
添加術語「數組長度」和「行464」,其實導致我解決這個特定的問題,那就是:
- 從原型V1.4更新至v1.5.1.2( v1.7,最新版本, 沒有正常工作,甚至產生了堆棧溢出錯誤)。
變卦了腳本的秩序,改變noConflict:
<script src="/scripts/jquery-1.5.2.js" type="text/javascript"></script> <script src="/scripts/jquery.Scroller-1.0.src_4.js" type="text/javascript"></script><!-- all _$_'s replaced with _jQuery_ --> <script type="text/javascript"> <!-- // more jquery, all $'s replaced with jQuery --> </script> <script type="text/javascript"> <!-- jQuery.noConflict(); --> </script> <script src="scripts/prototype-1.5.1.2.js" type="text/javascript"></script> <script type="text/javascript"> <!-- // everything else, including prototype scripts --> </script>
就是這樣!現在我沒有收到「Line 464」錯誤,所有腳本都正常工作。 謝謝@Ken和@Diodeus爲我帶來解決方案。
謝謝里克,你今天救了我的命。 –
我會在同一個庫中找到插件。 jQuery有你提到的所有插件,所以沒有必要嘗試使用兩者。這兩個圖書館很難一起工作。
如果你使用這兩個庫設置,試試這個排序:
1)其他的lib
2)jQuery的
3)noconflict調用
4)所有的插件
<script src="scripts/prototype.js" type="text/javascript"></script>
<script src="/scripts/jquery-1.5.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
<!--
$.noConflict();
-->
</script>
<script src="/scripts/jquery.Scroller-1.0.src_3.js" type="text/javascript"></script>
<script src="scripts/lightbox.js" type="text/javascript"></script>
我試着按照這個順序放置腳本,並且用'jQuery'替換了'$',就像@Diodeus說的那樣...仍然會出現同樣的錯誤。 我會使用全部jQuery,但在開始更改事物之前,網站上正在使用腳本,並且我寧願保留這些腳本。 –
您可能需要通過插件並將$(
替換爲jQuery(
,因爲您需要在無衝突模式下使用「jQuery ...」而不是「$ ...」。
所以基本上我使用的任何jQuery代碼 - 我應該用'jQuery'代替'$'? –
是的。在插件中這樣做,因爲它們可能不是在考慮「無衝突」的情況下製作的。 –
有沒有一種方法可以找到導致錯誤的確切腳本/行?在prototype.js中提到的Line 464 IE並沒有告訴我很多 - 只有(或許)它與'.extend'有關,但是這並沒有說明什麼。 如果我能找到問題的根源,它會使修復更容易。 –
環繞使用jQuery的與
(function ($) {
... // Your code
})(jQuery)
這樣,它使用本地$這勢必jQuery和和jQuery唯一的代碼。
在同一個網站上使用這兩個框架也被認爲是一個壞主意。幾乎所有的Prototype插件都可以找到jQuery替代品。
- 1. box2d,在與b2_dynamicbody碰撞時破壞b2_staticbody導致隧道效應
- 2. 可破壞的網格塊導致奇怪的碰撞
- 3. 碎片碰撞的Activty破壞
- 4. jQuery簡單:兩個功能碰撞
- 5. jQuery的碰撞引導NAVI
- 6. 導軌功能測試不會破壞
- 7. 像素完美碰撞導致與迷宮和PacMan的不準確碰撞
- 8. 碰撞和團結碰撞
- 9. JQuery原型功能
- 10. 添加功能導入功能似乎在EF6中被破壞
- 11. Smarty和jquery移動碰撞
- 12. Jquery DIV碰撞
- 13. 使用「源」破壞功能
- 14. 初始化和破壞功能
- 15. 撤消和重做功能破壞
- 16. Flash功能中的碰撞檢測? (hitTestObject)
- 17. 碰撞功能不允許我的導彈移動
- 18. 碰撞一致性算法
- 19. 從jquery碰撞中獲取突變和碰撞數據
- 20. 碰撞和碰撞器不能正常工作
- 21. 碰撞檢測和碰撞響應
- 22. 包有型碰撞
- 23. JSF PrettyFaces導致過濾器鏈'破壞'
- 24. Ember.js控制器破壞功能
- 25. 破壞在URL導致404錯誤
- 26. 什麼是導致包裝破壞?
- 27. &符號導致破壞POST請求
- 28. TypeConverters破壞了原始類型?
- 29. 通過jQuery添加HTML元素導致Etalage插件中的錯誤(功能碰撞問題)
- 30. 測試因Mockgoose導致失敗導致MongoError:拓撲被破壞
你可能可以搞定它,但我敢打賭,只需在jquery中找到一個彈出式燈箱或原型中的一個選取框並僅使用其中一個庫,就會更容易。他們對於共同合作可能會非常不利。那就是說,你的問題可能與你調用的範圍,以及你包含你的庫和插件的順序有關。 – Ken
我可能會這樣做,但如果我可以解決這個問題,那麼我寧願繼續使用jQuery,因爲我對它更熟悉。 另外,包括庫和插件的順序應該是什麼?並請原諒我的無知,但我的呼叫的範圍是什麼? –