我正在为客户端重新构建一个页面,并且我在页面上实现了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,因为我对它更熟悉。 另外,包括库和插件的顺序应该是什么?并请原谅我的无知,但我的呼叫的范围是什么? –