2011-07-12 10:17

解决ECShop与jQuery冲突

提示:修改任何文件前请先备份!

==================================================
2013年5月23日更新:不建议做全站修改!修改文件过多,容易出现各种各样的问题。

如果只是单纯的首页添加jQuery,建议用这个方法:在首页模板index.dwt底部body前引入jquery文件及以下代码即可解决:

<script type="text/javascript">
$(function() {
    window.__Object_toJSONString = Object.prototype.toJSONString;
    delete Object.prototype.toJSONString;
});
</script>


=====================================================================

全站jQuery兼容修改(不完美,容易出现问题):

1、修改文件:/js/transport.js

在文件最底部增加代码:

if (Object.prototype.toJSONString) {
    var oldToJSONString = Object.toJSONString;
    Object.prototype.toJSONString = function() {
        if (arguments.length & amp; gt; 0) {
            return false;
        } else {
            return oldToJSONString.apply(this, arguments);
        }
    }
}

2、修改文件:/js/compare.js
查找代码:

this.timer = window.setInterval(this.relocation.bind(this), 50);

修改为:

this.timer = window.setInterval(this.bind(this.relocation,this), 50);

查找代码:

lastScrollY : 0

在代码上面一行增加代码:

bind: function(obj1, obj2) {
    return function() {
        obj1.apply(obj2, arguments);
    }
}

3、在以下模板文件中,找到嵌入global.js文件的代码,删除嵌入global.js
brand.dwt
brand_list.dwt
category.dwt
exchange_list.dwt
search.dwt

4、下载最新版的jquery库文件到模板目录中,如:
/themes/temlatename/images/js/jquery.1.5.2.js
如果你的模板中没有对应目录,则新建目录拷入jquery文件即可
5、修改文件:/themes/temlatename/library/page_header.lbi
在顶部加入代码:

<script src="images/js/jquery.1.5.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
    var $$ = jQuery.noConflict();
</script>

注意,以后调用JQUERY对象要用两个美元符$$,不要用一个$,因为一个$与ECSHOP原有的函数同名有兼容问题。

6、修改完毕!放心使用你的JQUERY特效吧!

 

你可能还喜欢...

  1. Ray Ray

    楼主,有木有试试用jQuery.noConflict()让渡、、、jq = jQuery.noConflict();jq(code..);我也是新手,不知道用了这种方法,接下去怎么测试。。。

    1. 不行的,jquery文件里的json相关代码跟ecshop里的冲突。

  2. 阿文 阿文

    博主  代码提示有错误。 小白不知如何解决。

    1. DT27 DT27

      具体提示什么错误呢~

  3. 匿名 匿名

    我尝试过了 不行啊 按你说的做 jq是可以使用了 但是ec原始的ajax功能就不能用了

添加新评论