Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
相同的JavaScript代码在两种不同的环境中表现不同_Javascript_Jquery_Jquery Ui - Fatal编程技术网

相同的JavaScript代码在两种不同的环境中表现不同

相同的JavaScript代码在两种不同的环境中表现不同,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,我在一个巨大的网站上有一个运行中的jQuery进度条形码(),直到一个新版本崩溃,错误是“UncaughtTypeError:Object[Object Object]没有方法‘progressbar’” 我发现根本原因是jQuery被多次添加,这在发布过程中不知何故发生了。网站上的许多其他地方,例如使用jqueryselected()的地方,也崩溃了 我设法用jQuery.noConflict()修复了它;在问题专家打电话之前,一切都恢复了平静。新版本发布到生产环境中,大家都很高兴 结果是,除

我在一个巨大的网站上有一个运行中的jQuery进度条形码(),直到一个新版本崩溃,错误是“UncaughtTypeError:Object[Object Object]没有方法‘progressbar’”

我发现根本原因是jQuery被多次添加,这在发布过程中不知何故发生了。网站上的许多其他地方,例如使用jqueryselected()的地方,也崩溃了

我设法用jQuery.noConflict()修复了它;在问题专家打电话之前,一切都恢复了平静。新版本发布到生产环境中,大家都很高兴

结果是,除了jQuery进度条之外,其他所有内容都是固定的。为了让它更有趣,我回到了我的测试环境中,所有的东西都在那里工作,包括进度条


我将服务器上的所有文件与测试环境中的文件进行了比较,代码完全相同。所有其他JavaScript在服务器上都可以正常工作,但jQuery进度条只会在我的测试环境中继续工作,而不会在“未捕获的TypeError:Object[Object Object]没有方法‘progressbar’”的生产环境中继续工作。有什么想法或提示可能是什么问题吗?

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


和,由于我们的测试环境是本地的,脚本文件将是本地的,并且会立即加载,这与生产环境不同,您无法确定不同人员的带宽。而且,这些东西有时会欺骗我们,就像它们第二次欺骗缓存文件一样,但可能不适用于每个客户端。

导入两个版本的jQuery通常是一个非常糟糕的主意。给我们一个文件列表,即使导入同一版本两次,也会删除所有插件。你可能会认为它比这更聪明,但不会。很可能代码并不完全相同——否则你就不会有这个问题。问题是试图缩小差异所在。进一步研究代码,jQuery似乎只导入一次。我使用WindowsMerge实用程序在测试和生产环境中比较了整个目录,没有发现任何差异。以下是导入的文件列表:jquery-1.10.1.min.js jquery.content-panel-switcher.css jquery.easing.1.3.js jquery.content-panel-switcher.js jquery-ui.css//1.10.0 jquery-1.9.1.js jquery-ui.js//1.10.3这很有道理,我的脚本确实在文件的开头。但是,它们位于$(document).ready(function()中…所以不管怎样,它都应该工作。我确实在文件的最后移动了脚本,但我在生产中仍然得到相同的错误,并且它在测试中继续工作..好吧,然后再看看更新
缓存到期时间
s(如果您设置了)。然后在浏览器上删除缓存并测试您手上的生产版本。