ECSHOP_jquery兼容方案

ecshop把AJAX事件和JSON解析的模块放在common/transport.js之中,可以说它也有自己封装的一套工具,这其实是很正常的。

但恰恰的,在封装JSON各种方法的同时对object的模型进行了重写,这个就跟jQuery冲突了。因为众所周知的,jQuery对各种JavaScript对象进行了扩展。

这一切其实都很容易理解,各有各的理由十分自然,但头痛和无奈的就变得在我们这些使用者身上了。在ECShop论坛上原来也有很多朋友提出了这个问题,也提出了各种各样的方法,我尝试了一些,不好或者甚至无用,所以只好自己动手了。

解决思路大概就是屏蔽ecshop扩展的toJSONString方法,用别的函数代替。

为了照顾下小菜们,就写详细点吧。

一,修改默认js文件

1、首先复制一份 transport.js 改名为 transport.org.js 提供给后台使用

2、屏蔽掉transport.js里的toJSON功能 行数大概有497-737行之间

由if ( ! Object.prototype.toJSONString) { 开头的代码。

修改352行为:

legalParams = “JSON=” + $.toJSON(params);

修改408行为:

result = $.evalJSON(result);

屏蔽掉global.js里的如下代码(第10-13行):

Object.prototype.extend = function(object)

{

return Object.extend.apply(this, [this, object]);

}

3、修改index.js文件44行改为:

var res = $.evalJSON(result);

4、修改common.js文件

第34行改为:

Ajax.call(‘flow.php?step=add_to_cart’, ‘goods=’ + $.toJSON(goods), addToCartResponse, ‘POST’, ‘JSON’);

第850行改为:

Ajax.call(‘flow.php?step=add_package_to_cart’, ‘package_info=’ + $.toJSON(package_info), addPackageToCartResponse, ‘POST’, ‘JSON’);

第1056行改为:

Ajax.call(‘flow.php?step=add_to_cart’, ‘goods=’ + $.toJSON(goods), addToCartResponse, ‘POST’, ‘JSON’);

5、修改compare.js文件

第49行改为:

this.data = $.evalJSON(cookieValue);

第67行改为:

var obj = $.evalJSON(cookieValue);

第133行改为:

document.setCookie(“compareItems”, $.toJSON(this.data));

6、修改global.js文件

第16行改函数名 :function $e()

第114和126行都改为:    var element = $e(element);

二,修改后台调用部分

7、<!&mdash;&mdash;&mdash;&ndash;路径修改&mdash;&mdash;&mdash;&ndash;>

修改后台头部引入transport.js路径 admin/templates/pageheader.htm 第9行改为: {insert_scripts files=&rdquo;../js/transport.org.js,common.js&rdquo;}

admin/templates/menu.htm

151行改成 {insert_scripts files="../js/global.js,../js/utils.js,../js/transport.org.js"}

三,修改前台模板部分

8、修改themes/default/library/page_header.lbi文件在{insert_scripts files=&rsquo;transport.js,utils.js&rsquo;}上面加上如下代码

{insert_scripts files=&rsquo;jquery.js,jquery.json.js&rsquo;}

9、<!&mdash;&ndash;修改文件&mdash;&ndash;>

library/comment_list.lbi

第188行 :

Ajax.call(&lsquo;comment.php&rsquo;, &lsquo;cmt=&rsquo; + $.toJSON(cmt), commentResponse, &lsquo;POST&rsquo;, &lsquo;JSON&rsquo;);

10、compare.dwt

第20行 :

var obj = $.evalJSON(document.getCookie(&ldquo;compareItems&rdquo;));

第24行 :

document.setCookie(&ldquo;compareItems&rdquo;, $.toJSON(obj));

11、flow.dwt

第138行 :

Ajax.call(&lsquo;flow.php?step=add_to_cart&rsquo;, &lsquo;goods=&rsquo; + $.toJSON(goods), collect_to_flow_response, &lsquo;POST&rsquo;, &lsquo;JSON&rsquo;);

第199行 :

Ajax.call(&lsquo;flow.php?step=add_to_cart&rsquo;, &lsquo;goods=&rsquo; + $.toJSON(goods), fittings_to_flow_response, &lsquo;POST&rsquo;, &lsquo;JSON&rsquo;);

12、<!&mdash;&ndash;jquery文件需置顶的dwt文件&mdash;-jquery.js文件需要在compare.js文件加载前加载,否则会报错&mdash;&ndash;>

brand.dwt

brand_list.dwt

category.dwt

exchange_list.dwt

search.dwt

如:

{* 包含脚本文件 *}

{insert_scripts files=&rsquo;jquery.js,jquery.json.js&rsquo;}

{insert_scripts files=&rsquo;common.js,global.js,compare.js&rsquo;}

ECSHOP_jquery兼容方案

时间: 2024-08-17 05:05:47

ECSHOP_jquery兼容方案的相关文章

最新CSS兼容方案

CSS兼容方案,让你的样式完美兼容各大浏览器,这个方案主要是用来解决Safari的,Opear是在测试的时候顺带试了一下,结果发现竟然也行,所以顺便也解决了. .e {/*FF OP*/ color: rgb(68, 68, 68); font-family: 'Hiragino Sans GB', Tahoma, Simsun, 'Microsoft Yahei';">} html* .e{/*Sa IE7 OP*/ color: rgb(68, 68, 68); font-family

Emoji表情符号兼容方案

Emoji表情符号兼容方案 一 什么是Emoji    emoji就是表情符号:词义来自日语(えもじ,e-moji,moji在日语中的含义是字符) 表情符号现已普遍应用于手机短信和网络聊天软件. emoji表情符号,在外国的手机短信里面已经是很流行使用的一种表情. 手机上如何使用emoji: 1.iphone.ipad系统:安装emoji free,再设置-通用-键盘-国际键盘-添加新的键盘,然后把emoji添加在里面即可在发短信和一些输入文本的文本框中输入表情. IOS 5用户可直接从通用中添

Drawable 着色的后向兼容方案

看到 Android Weekly 最新一期有一篇文章:Tinting drawables,使用 ColorFilter 手动打造了一个TintBitmapDrawable,之前也看到有些文章使用这种方式来实现 Drawable 着色或者实现类似的功能.但是,这种方案并不完善,本文将介绍一个完美的后向兼容方案. 解决方案 其实在 Android Support V4 的包中提供了 DrawableCompat 类,我们很容易写出如下的辅助方法来实现 Drawable 的着色,如下: public

Emoji表情符号兼容方案(适用ios,android,wp等平台)

http://blog.csdn.net/qdkfriend/article/details/7576524 Emoji表情符号兼容方案 一 什么是Emoji emoji就是表情符号:词义来自日语(えもじ,e-moji,moji在日语中的含义是字符) 表情符号现已普遍应用于手机短信和网络聊天软件. emoji表情符号,在外国的手机短信里面已经是很流行使用的一种表情. 手机上如何使用emoji: 1.iphone.ipad系统:安装emoji free,再设置-通用-键盘-国际键盘-添加新的键盘,

#h5软键盘兼容方案

h5软键盘兼容方案 本人在做公司项目的时候,在h5上调用键盘,发现了许多问题,主要问题总结如下 1.在 Android 和 IOS 上,键盘弹出收起在页面 webview 里表现不同. // 判断设备类型 var judgeDeviceType = function () { var ua = window.navigator.userAgent.toLocaleLowerCase(); var isIOS = /iphone|ipad|ipod/.test(ua); var isAndroid

Android中Activity切换时共享视图元素的切换动画(4.x兼容方案)

同时发布在我的博客 点此进入 开始 上一篇讲了使用 Google 的 AppCompat-v7 来实现 Activity 切换时实现共享视图元素的切换动画.这一篇介绍两个可以兼容 4.x 的两个第三方方案. 上一篇:Android中Activity切换时共享视图元素的切换动画(5.0以上) 方案一:PreLollipopTransition 首先在 build.gradle 配置文件添加这个库依赖 dependencies { compile 'com.kogitune:pre-lollipop

移动端 ios 长按复制兼容方案(“偷下懒”,换个思路,也许路就通了)

移动端页面,需要复制一段文字码. 在ios中,长按文字区域,默认选中的范围,超出了我长按的文字区域, 把上面的图片和下面的另一个div的文字也给我包含进来了,并不是我想要的! 举个例子: 如下图: 1.我长按的区域是红色方框内的区域,想要复制框里的文字内容. 2.结果却是下图,即便 ios 上能再稍微操作一下.变成我想要的复制区域,但是这样用户体验太差 3.得想办法长按后 立刻变成如下图的情况 那么,想到了平时在其他站点上用到的一键复制,比如博客园的复制博客里的代码: 查了下有关页面复制功能,发

字体图标出现乱码的兼容方案

/* 只需在iOS4.3+/Android2.2+上运行的网页 */ @font-face { font-family: "iconfont"; src: url("iconfont.ttf") format("truetype"); } /* 需兼容各浏览器的网页.注意: 最后的svg没有指定format */ @font-face { font-family: "iconfont"; src: url("icon

clientHeight , scrollHeight , offsetHeight之间的区别及兼容方案

clientHeight , scrollHeight , offsetHeight相信每个人都用过,可是每次用都要查一下到底哪个是文档大小哪个是视口大小,还有头疼的兼容问题. 先来官方的了解一下这三个属性: clientHeight:元素客户区的大小,指的是元素内容及其边框所占据的空间大小(经过实践取出来的大多是视口大小) scrollHeight: 滚动大小,指的是包含滚动内容的元素大小(元素内容的总高度) offsetHeight: 偏移量,包含元素在屏幕上所用的所有可见空间(包括所有的内