chrome,附加dom元素和后退行为的大问题

时间:2011-11-18 15:29:55

标签: javascript jquery dom google-chrome shopping-cart

我正在努力解决一个明显无解决方案的问题。

我正在为客户编写一个jQuery购物车(请参阅此处的演示:http://thisisnot2.fornacestudio.com/prodotto)。

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

有人知道是什么原因引起的吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

好吧,如果您不知道错误来自soi-cart.js中的第351行

jQuery(this).find(".category-content").modal( ... );

object has no method 'modal'的形式,我还没有弄清楚为什么到目前为止,当我最初通过硬刷新以及导航和返回时点击页面时,页面中包含脚本。


修改: 在查看脚本后,我注意到您使用页面顶部的lazyload通过google https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js

包含jQuery 1.6.2

然后在你的head标签中你还加载了jQuery 1.6.1的本地副本 <script type='text/javascript' src='http://thisisnot2.fornacestudio.com/wp-includes/js/jquery/jquery.js?ver=1.6.1'></script>

最后,在页面的最底部,您可以包含简单模式脚本 <script type="text/javascript" src="http://thisisnot2.fornacestudio.com/wp-content/themes/notatemplate/cart/jquery.simplemodal.1.4.1.min.js"></script>

我的理论是对页面进行硬刷新,首先加载两个jQuery脚本,然后加载simplemodel脚本,当然将其.model()方法扩展到jQuery对象上。

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

所以你需要从页面中删除延迟加载jQuery。