首页 > 网站开发 > [完美解决]ECShop的transport.js文件与jquery文件冲突问题

[完美解决]ECShop的transport.js文件与jquery文件冲突问题

最后更新: 2015-06-25    浏览次数:     

还无法判断问题产生原因的网友, 请直接跳过原因, 查看问题的现象, 如果有相似现象, 就可以直接查看解决方法.

产生原因:
很多网站的样式都使用JavaScript框架:jQuery,
我们在用ECShop做站修改界面时, 也都需用到jQuery库.
而ECShop把AJAX事件和JSON解析放在common.js和transport.js中, 可以说这是ECShop自己封装的一套工具, 但ECShop在封装JSON各种方法的同时对object的模型进行了重写, 这就跟jQuery产生了冲突.

问题现象:
不管冲突的原因是什么, 网站主要会出现以下现象:
1: 网页巨卡无比, 过一段时间才能加载完成.
2: 加载结束之后, ECShop一些功能无法使用, 如产品无法添加购物车, 产品无法比较, 无法评论等.
3: 除了2的现象, 在网页使用到jQuery库做特效的一些功能也无法正常使用, 如: 下拉菜单无法弹出, 产品幻灯片无法播放等等.

解决方法(比如:商品页面goods.dwt):
1: 下载transportNew.js到js目录下(下载地址写在最后)
2: 在goods.dwt页面,将所有引用transport.js文件的地方, 改为transportNew.js
注意! 是所有, 在goods.dwt页面中, 还有引用到library文件夹中各种.lbi文件, 如: 评论comments_list.lbi文件里也有引用到transport.js文件

这样, 上面问题现象描述中的1,3, 已经完美解决了(既:网页不卡了, 下拉菜单可以弹出, 产品幻灯片可以播放等等.)
此时, 添加购物车功能还是无法使用.
继续:
3: 打开js/common.js 文件, 将addToCart函数复制一份, 重命名为: addToCartNew
将新函数: addToCartNew的最后一句
 

Ajax.call('flow.php?step=add_to_cart', 'goods=' + goods.toJSONString(), addToCartResponse, 'POST', 'JSON');

改成
Ajax.call('flow.php?step=add_to_cart', 'goods=' + objToJSONString(goods), addToCartResponse, 'POST', 'JSON');

!!!注意对比两句代码不一样的地方!!!

这样, 产品goods.dwt页面添加评论的功能与jQuery特效的冲突也已经完美解决了!!!!
以上解决方法为商品页面goods.dwt的transport.js文件jQuery库的解决方法.
其他页面也一样!!!!

transportNew.js文件下载地址: