解决ECSHOP中transport.js和jquery的冲突
来源:互联网 发布:软件安全评估报告 编辑:程序博客网 时间:2024/04/28 08:20
方案一:
本人亲测过,可以用。有的人说需要删除js目录下的gobal.js文件,否则依然会冲突。我没删除也解决了冲突。
1、加入JSON2.js文件
原因很简单,transport修改Object是为了加入支持JSON的方法。所以我这里用JSON官网在javascript语言上提供的 json2.js支持具体下载地址json官网
http://www.json.org/js.html
加入json2.js例如{insert_scripts files='transport.js,utils.js,json2.js'}
2、修改transport.js
2.1 注释掉重写object的方法,具体搜索
if
( ! Object.prototype.toJSONString) {
这一段代码,然后把里面的内容全部注释掉。(我的是注释掉496-737行)
2.2 加入新的JSON支持方法
function objToJSONString(obj, filter){
return
JSON.stringify(obj, filter);
}
function parseObjectToJSON(
object
, filter){
return
JSON.parse(
object
, filter);
}
function objToJSONString(obj, filter){
return
JSON.stringify(obj, filter);
}
function parseObjectToJSON(
object
, filter){
return
JSON.parse(
object
, filter);
}
也可以看到其实都很简单,都是调用json2.js里面提供的方法,有人觉得不必在这里添加直接调用也可以,但我还是建议做这样的一个适配器在这,因为容易容易表明用意。
2.3 修正AJAX方法
2.3.1 在transport.js搜索params.toJSONString() 改为 objToJSONString(params)
2.3.2 继续在transport.js搜索result.parseJSON() 改为 parseObjectToJSON(result)(具体在408行左右)
3、修复旧JSON调用地方
简单来说就是把所有*.toJSONString() 的调用改为用objToJSONString(*),而*.parseJSON()改为parseObjectToJSON(*)。
例如: common.js里面第一个函数里面的
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’);
comm.js里面还有一些Ajax.call调用tojsonstring的,都需要按照本例替换。
但非不得已不建议把一切旧的调用都修复,应该选择性的修复,应当出现冲突的地方我们才必须去修复。
就是说哪里调用了jQuery,就把修正后的transport.js及json2.js导入,并且修复toJSONString和 parseJSON方法,其他页面几不必了。
所以说,也不建议在header里面就加入了jQuery,因为这样每个页面都会出现冲突了,修复工资也比较麻烦了,能避免尽量避免了。
**********************************************************************************************************************************************************************************
ecshop模板兼容jquery问题, 一直是困扰开发人员的棘手问题,主要原因是 transprot.js 文件中,大概 580行到590行之间,这个句用于格式化json,他重写了object的结构,导致于js框架冲突。冲突的原因是jquery给一个object增加了很多元素,那么在Object.prototype.toJSONString = function () 这个函数中 for (k in this) 语句中进行了无数次的循环,导致网页很卡,并且在IE中会报错。
ECSHOP开发中心为您提供一个简单的解决transport.js 和 jquery 方法:
在 page_header.lbi 库文件中加入如下代码,注意操作顺序:
1.先导入transport.js 文件 {insert_scripts files='transport.js,utils.js'}
2.然后导入您网站使用的jquery文件
<script language="javascript" src="您的jquery存放路径"></script>
3.加入代码
<script type="text/javascript">
$(function() {
window.__Object_toJSONString = Object.prototype.toJSONString;
delete Object.prototype.toJSONString;
});
</script>
- 解决ECSHOP中transport.js和jquery的冲突
- 解决ECSHOP系统中transport.js和jquery的冲突
- 解决ECSHOP中transport.js和jquery的冲突
- 解决ECSHOP中transport.js和jquery的冲突
- 解决ECSHOP中transport.js和jquery的冲突问题
- 解决ECshop transport.js和Jquery的冲突
- 一招解决!!!解决ECSHOP中transport.js和jquery的冲突
- 一招解决!!!解决ECSHOP中transport.js和jquery的冲突
- 解决ECShop transport.js与jQuery冲突
- 解决ECShop transport.js与jQuery冲突
- 解决ECShop transport.js与jQuery冲突
- 解决ECShop transport.js与jQuery冲突
- 解决ecshop的transport.js跟jquery冲突问题
- ecshop transport.js 和 jquery 冲突解决办法
- ecshop的transport.js文件和Jquery冲突
- ecshop的transport.js文件和Jquery冲突问题
- ECSHOP中transport.js和jquery的冲突的简单解决办法
- transport.js文件(解决ecshop jquery jqzoom冲突)
- sql 语句 like 多个条件的写法
- ios NavigationController里面默认得返回按钮
- CMake 使用方法
- linux内核模块编译链接与加载剖析二
- Python tab.py
- 解决ECSHOP中transport.js和jquery的冲突
- Pascal's Triangle II
- Windows下8位和16位PCM数据之间的转换
- unity协同程序
- MySql通过二进制日志文件恢复数据
- 桶排序详解
- Stanford-CV华人教授李飞飞写给她学生的一封信,如何做好研究以及写好PAPER
- Working Practice-有意义大于形式
- 合理使用优化工具 为XP启动提速-rmzt