Javascript chrome、附加的dom元素和后台行为存在大问题

Javascript chrome、附加的dom元素和后台行为存在大问题,javascript,jquery,dom,google-chrome,shopping-cart,Javascript,Jquery,Dom,Google Chrome,Shopping Cart,我在一个显然没有解决方案的问题中挣扎 我正在为一位客户编写jQuery购物车(请参阅此处的演示:) cart脚本正在大量操作dom元素。 问题是,在将订单发布到表单页面后,如果在Chrome浏览器中点击后退按钮,脚本将停止工作(例如:类别在单击后不会显示其内容) 有人知道这是什么原因吗 谢谢 如果您不知道错误来自suchi-cart.js中的第351行 jQuery(this).find(".category-content").modal( ... ); 在对象的形式中没有方法“modal”

我在一个显然没有解决方案的问题中挣扎

我正在为一位客户编写jQuery购物车(请参阅此处的演示:)

cart脚本正在大量操作dom元素。 问题是,在将订单发布到表单页面后,如果在Chrome浏览器中点击后退按钮,脚本将停止工作(例如:类别在单击后不会显示其内容)

有人知道这是什么原因吗


谢谢

如果您不知道错误来自suchi-cart.js中的第351行

jQuery(this).find(".category-content").modal( ... );
对象的形式中没有方法“modal”
,我还没有弄清楚确切的原因,因为我在最初硬刷新页面时看到页面上包含的脚本,以及在导航离开和返回时看到的脚本


编辑: 在进一步查看脚本时,我注意到您在页面顶部使用了一个
lazyload
,通过google
将jQuery 1.6.2包括在内https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js

然后,在head标记中,还通过加载jQuery 1.6.1的本地副本

最后,在页面的最底部,通过

我的理论是对页面进行硬刷新,首先加载两个jQuery脚本,然后加载simplemodel脚本,这当然扩展了它的
.model()
方法,而不是jQuery对象

但是当您离开页面返回时,通过
jQuery 1.6.1加载的脚本和simplemodel插件会立即加载,但通过Google加载的jQuery 1.6.2的LazyLoad不会通过缓存运行,因为它是一个脚本,因此在前两个脚本将jQuery对象覆盖到1.6.2并删除simplemodel之后加载加载到对象中的脚本


因此,您需要从页面中删除延迟加载jQuery。

您是说点击后退按钮是正常和预期的行为吗?您知道什么是正确的错误吗?只是想找到解决办法。你说我不应该考虑用户想要回来的可能性吗?杰夫:我不知道是什么原因造成了这个错误。加载js资源的错误将是我的第一个赌注。奇怪的是,firebug在firefox中没有显示错误,但在Chrome中我看到它在点击时发生。这是回来后才出现的。感谢您注意到,双重加载是由于我知道的一个插件被停用。不幸的是,这似乎并没有解决问题。问题是将jQuery包含在lazyload中,当您使用浏览器返回时,通过标记包含的所有脚本都会通过缓存立即加载,但LazyLoading javascript会导致它重新加载,因此您所有的jQuery插件都会在jQuery库加载之前加载,因此,现在如果您查看chrome中的开发者工具栏,您将看到以下错误
uncaughtreferenceerror:jQuery未定义
。第一个问题是懒散的加载和两次包含两个jQuery,缓存脚本jQuery 1.6.1标记和simplemodal脚本是通过缓存立即加载的,但是后来googleinclude覆盖了它。你真是个天才!谢谢!虽然重新组织站点周围的所有脚本并放弃LazyLoad有点困难,但现在它工作起来就像一个魔术师。