低调解决jquery冲突!很低调~~

2016-07-07 14:55 来源:www.chinab4c.com 作者:ecshop专家



首先感谢 wwwweaver的帖子 http://bbs.ecshop.com/viewthread.php?tid=118132&highlight=jquer 在这也分享下我修改的方法,我把修改的文件和地方都指出来了.都是指定的行号.也许行号会有不对请核对下代码!js文件夹里要有jquery.js 和 jquery.json.js可以在网上下.

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



2,屏蔽掉transport.js里的toJSON功能 行数大概有497-737行之间
修改352行为:

  1. legalParams = "JSON=" + $.toJSON(params);
复制代码


修改408行为:
  1. result = $.evalJSON(result);
复制代码



3,修改index.js文件44行改为:
  1. var res = $.evalJSON(result);
复制代码




4修改common.js文件
第34行改为:

  1. Ajax.call('flow.php?step=add_to_cart', 'goods=' + $.toJSON(goods), addToCartResponse, 'POST', 'JSON');
复制代码


第850行改为:
  1. Ajax.call('flow.php?step=add_package_to_cart', 'package_info=' + $.toJSON(package_info), addPackageToCartResponse, 'POST', 'JSON');
复制代码


第1056行改为:
  1. Ajax.call('flow.php?step=add_to_cart', 'goods=' + $.toJSON(goods), addToCartResponse, 'POST', 'JSON');
复制代码




5,修改compare.js文件
第49行改为:

  1. this.data = $.evalJSON(cookieValue);
复制代码


第67行改为:
  1. var obj = $.evalJSON(cookieValue);
复制代码


第133行改为:
  1. document.setCookie("compareItems", $.toJSON(this.data));
复制代码




6, 修改global.js文件
第16行改函数名 :function $e()
第114和126行都改为: var element = $e(element);





<!-----------路径修改----------->
修改后台头部引入transport.js路径 admin/templates/pageheader.htm 第9行改为: {insert_scripts files="../js/transport.org.js,common.js"}

修改themes/default/library/page_header.lbi文件在{insert_scripts files='transport.js,utils.js'}上面加上如下代码
{insert_scripts files='jquery.js,jquery.json.js,other.js'}


<!-----修改文件----->
library/comment_list.lbi
第188行 :
  1. Ajax.call('comment.php', 'cmt=' + $.toJSON(cmt), commentResponse, 'POST', 'JSON');
复制代码


compare.dwt
第20行 :
  1. var obj = $.evalJSON(document.getCookie("compareItems"));
复制代码


第24行 :
  1. document.setCookie("compareItems", $.toJSON(obj));
复制代码


flow.dwt
第138行 :
  1. Ajax.call('flow.php?step=add_to_cart', 'goods=' + $.toJSON(goods), collect_to_flow_response, 'POST', 'JSON');
复制代码


第199行 :
  1. Ajax.call('flow.php?step=add_to_cart', 'goods=' + $.toJSON(goods), fittings_to_flow_response, 'POST', 'JSON');
复制代码



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


brand.dwt
brand_list.dwt
category.dwt
exchange_list.dwt
search.dwt


如:
{* 包含脚本文件 *}
{insert_scripts files='jquery.js,jquery.json.js,other.js'}
{insert_scripts files='common.js,global.js,compare.js'}

回答:
需要测试

楼主说的是哪个文件的25行


是jquery.js文件.不过我测试了是在火狐下可行,在IE下不行.额郁闷啊!总以为是"$"符号的冲突,用jQuery.noConflict();取别名还是不行,看来不是$符号的冲突,是内部文件transport.js冲突了,具体的是哪个地方冲突了还未找到.

官方才不管这事呢。
http://bbs.ecshop.com/viewthread ... amp;highlight=jquer
我按这个帖子解决了。
但是有个很大的问题。jquery文件很大。页面加载很慢 。不知道这个问题能不能解决

如果要用jquery替代$符号的话根本没你那么麻烦,jQuery.noConflict()足以搞定。



要修改json的传递方式。
提示:
使用jquery的json库文件,在这里可以下载。还需要做一些额外的工作。
如将transport中的json方法重写[url]http://code.google.com/p/jquery-json/[/url]
功能方面涉及到了‘添加购物车’, ‘添加收藏夹’, 并且会影响到后台的一些修改。鉴于这些工作的修改量建议使用原生的js。

把transport里面的那段json解析程序用json2.js里面的替换就可以了。
json2.js文件的下载地址:
http://www.json.org/js.html


这个修改方法我正在试着修改,不过改动确实很大哦.刚改的几个页面测试了下.确实可行!正在统计需要改的页面有多少~


是要替换哪段代码.替换后方法名需要改吗.请求指点和步骤!

冲突????
是什么症状!!!!!!!!!!!!1



transport.js里json和jquery有冲突

经自己测试在IE和火狐firebug下均没有报错.如果大家照上面方法修改后发现有页面报JS错误或不正常.请上报!




呵呵!我这边按照我的方法已经测试解决没有问题了.你可以照我的方法试下.最好在修改前备份一份要修改的文件!

先照着你说的试试