繁体   English   中英

相同的JavaScript代码在两种不同的环境中的行为不同

[英]Same JavaScript code behaves differently in two different environments

在一个巨大的网站上,我有一个工作正常的jQuery Progress Bar Code( 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只能在我的测试环境中继续工作,而不能在生产环境中继续工作,在生产环境中,“未捕获的TypeError:对象[object Object]没有方法'progressbar'”仍然存在。 任何想法或暗示可能是什么问题?

发生这种类型的错误的原因不是因为冲突,而是因为在加载html时,jquery开始执行。并找到尝试使用ui null引用。 最好的方法是将<script>标记放在文档的末尾。 然后,可能已经加载了html,并且将您附加progressbarobject准备好附加。

而且,由于我们的测试环境是本地的,因此脚本文件将是本地的,并且会立即加载,这在生产环境中并非如此,您无法确定其他人的带宽。 而且,这些事情有时会像欺骗缓存文件一样愚弄我们,这是第二次以后,但可能并非对每个客户端也一样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM