我在一个巨大的网站上有一个正在运行的jQuery Progress Bar代码(http://jqueryui.com/progressbar/),直到新版本崩溃时出现错误“Uncaught TypeError:Object [object Object]没有方法'progressbar'”。
我确定了根本原因,因为jQuery被多次添加,这在发布过程中以某种方式发生。网站上的许多其他地方,例如,使用jQuery Chosen(http://plugins.jquery.com/chosen/)的地方也崩溃了。
我设法使用jQuery.noConflict()修复它;在问题调用之前,一切都恢复了和平。新版本发布到生产环境,每个人都很高兴。
事实证明,除了jQuery Progress Bar之外的其他所有东西都是固定的。为了让它变得更有趣,我回到了我的测试环境中,绝对一切都在那里工作,包括进度条。
我将服务器上的所有文件与我的测试环境中的文件进行了比较,代码完全相同。所有其他JavaScript在服务器上都没有问题,但jQuery Progress Bar只能在我的测试环境中继续工作,但在生产中不会出现“Uncaught TypeError:Object [object Object]没有方法'progressbar'”的情况。有什么想法或提示可能是什么问题?
答案 0 :(得分:1)
这种类型的错误不是因为冲突,而是因为当你的html加载时,jquery开始执行。并找到你正在尝试null
的{{1}}引用。最好的方法是将ui
标记放在文档的末尾。然后,您的html可能已加载,并且您<script>
附加的object
将准备好附加到。
并且,由于我们的测试环境是本地的,因此脚本文件将是本地的并立即加载,而生产并非如此,您无法确定不同人员的带宽。而且,这些东西有时会像对待缓存文件那样欺骗我们,这是第二次,但也可能不适用于每个客户端。