chrome的大问题,附加dom元素和返回行为

Big issue with chrome, appended dom elements and back behavior

本文关键字:返回 元素 dom 大问题 附加 chrome      更新时间:2023-09-26

我正在努力解决一个显然没有解决方案的问题。

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

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

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

谢谢!

如果你不知道这个错误来自于such -cart.js中的第351行

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

object has no method 'modal'的形式中,我还没有弄清楚为什么,因为我看到页面上包含的脚本,当最初用硬刷新点击页面时,当导航离开并返回时。


编辑:在查看脚本时,我注意到您使用lazyload在页面顶部通过谷歌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>

最后,在页面的最底部,你通过包含你的simplemodal脚本<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通过谷歌不通过缓存运行,因为它是一个脚本,因此是加载后的前两个脚本覆盖jQuery对象1.6.2和删除simplemodal脚本加载到对象。

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