ecshop中transport和jquery不兼容的解决方案

问说网 · 发布于 2014-09-23 · 字数2368 · 浏览 2213 · 评论 0

ecshop根目录下的transport.js文件和Jquery插件是冲突的,两个文件不能同时调用,不然就会报错误提示,影响后面js代码的执行,那么如何解决ecshop中transport和jquery不兼容的问题呢?

原因分析

transport.js文件中,大概 580行到590行之间,这个句用于格式化json,他重写了object的结构,导致于js框架冲突。冲突的原因是jquery给一个object增加了很多元素,那么在Object.prototype.toJSONString = function () 这个函数中 for (k in this) 语句中进行了无数次的循环,导致网页很卡,并且在IE中会报错。

解决方案

根本的解决办法是不用transport.js中的json功能,那么就要有一个相同的功能来代替它,这里我选用jquery-json1.3.js。首先要把transport.js中的json功能删除。由于实现json功能的函数有区别,所以要麻烦改掉原ecshop中各个地方用到的toJSONString()函数。

解决步骤

  1. 下载附件中的js附件,并替换掉原文件。(主要去掉了transport.js的json功能并新增新的json功能)
  2. page_header.lbi 中添加 {insert_scripts files='jquery.js,jquery.json-1.3.js'}
  3. 在所有的JS中。
    • 替换 *.toJSONString()$.toJSON(*)
    • 替换 *.parseJSON()$.evalJSON(*)

替换页面所有的$(){}函数,防止jquery不生效,这一步是要替换掉原ecshop里的$(){}这个函数,因为它与jquery是冲突的,解决的办法很多,可以用其他函数代替,比如getId(){}等等,也可以用jquery本身来解决。

jQuery.noConflict()
  • 运行这个函数将变量$的控制权让渡给第一个实现它的那个库。
  • 这有助于确保jQuery不会与其他库的$对象发生冲突。
  • 在运行这个函数后,就只能使用jQuery变量访问jQuery对象。例如,在要用到$("div p")的地方,就必须换成jQuery("div p")
  • 注意:这个函数必须在你导入jQuery文件之后,并且在导入另一个导致冲突的库之前使用。当然也应当在其他冲突的库被使用之前,除非jQuery是最后一个导入的。

部分地方修改

在商品浏览页,用户评论

Ajax.call('comment.php', 'cmt=' + cmt.toJSONString(), commentResponse, 'POST', 'JSON');

替换为

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

index.js里

var res = result.parseJSON();

替换为

var res = $.evalJSON(result);
本文系作者 问说网 授权问说网发表,并经问说网编辑,转载请注明出处和 本文链接

相关文章

  • 2014-08-18制作一个扁平式的社交工具提示按钮
  • 2015-08-22HTML5是否真的需要Picture标签?
  • 2015-09-05HTML5和CSS3创建响应式时间轴效果
  • 2016-01-10使用SuperBox制作Google图片点击滑动放大效果
  • 2016-03-13Python面向对象多态分析
  • 2016-05-16引领设计潮流!学习响应式设计需要注意这几点
  • 2016-05-16jQuery.ish简化压缩版的jQuery库
  • 2016-06-06JavaScript数组元素的排序及洗牌算法
  • 发布评论

    为您推荐

    ios.notify.js使用CSS3和JavaScript实现iOS风格的通知
    问说网 · 发布于 2015-11-09

    ios.notify.js使用CSS3和JavaScript实现iOS风格的通知

    CSS3和JavaScript实现iOS风格的通知。阅读博客文章或者下载或登录Github库问题。iOS风格的通知了HTML和CSS3 3D变换,HTML iO…

    问说网 · 发布于 2016-03-08

    使用JavaScript判断浏览器的内核前缀

    先说明,此处的方法是说超级简单的方法,不是指代码超级少,而是用非常简单的知识点,只要懂得怎么写JavaScript的行内样式就可以判断。

    问说网 · 发布于 2016-06-01

    使用Zepto开发应用的注意点和技巧

    但是在开发过程中,我发现 Zepto 还远未成熟,其中包含了一些或大或小的“坑”,与 jQuery的差距还是很明显的,所以写篇文章记录下,希望对后来者有帮助。

    用UltraEdit搭建Perl集成开发环境
    问说网 · 发布于 2016-03-08

    用UltraEdit搭建Perl集成开发环境

    Perl语言没有集成开发环境,用记事本或是写字板写好Perl程序,然后保存成.pl格式的文件就可以运行。由于Perl是解释性的语言,不需要编译,所以写好的程序直…

    设计师的配色理论:你理解这些色彩术语吗?

    如何在设计中正确的,随心所欲的搭配出自己满意的颜色,我们首先需要了解颜色的理论术语。透彻的了解像色度、明度和饱和度这样的概念是搭配出满意的配色方案的关键。

    • 设计师的配色理论:你理解这些色彩术语吗?
    • 设计师的配色理论:你理解这些色彩术语吗?
    • 设计师的配色理论:你理解这些色彩术语吗?
    • 设计师的配色理论:你理解这些色彩术语吗?
    CarlElaine · 发布于 2016-05-17 · 浏览 1331 · 评论 0
    问说网 · 发布于 2016-07-05

    刷流量的注意了使用流量宝可能会中毒!

    相信大家都知道刷流量的有很多软件,最著名的就是流量精灵和流量宝,而我一直使用的流量宝,两个软件的使用基本差不多,可是你知道吗?使用流量刷流量可能会中毒,这不是危…

    Vincent · 发布于 2016-07-06

    正则表达式

    包 java.uti.regex   类 Pattern 正则表达式的编译表示形式 Matcher 通过解释 Pattern 对 character …

    问说网 · 发布于 2016-07-09

    Filtrify高级标签过滤jQuery插件

    Filtrify 是一个高级的标签过滤插件,灵感来源于 Chosen 多选功能和 Orman Clark 的 Vertical Navigation Menu。…

    问说网手机版

    躺着 站着 跪着轻松访问

    更多详情 关于作者

    问说网

    问说网分享与设计有关的文章素材界面和作品,提供设计教程、素材分享、界面欣赏、编程设计、设计书籍、设计师导航等内容,你可以在这里阅读、学习、分享、交流。

    13177 文章
    493 评论
    2121 人气

    更多 热门话题

    APP界面

    关注 APP界面

    文章 41506 · 浏览 3658

    APP欣赏

    关注 APP欣赏

    文章 41427 · 浏览 3415

    APP手机界面

    关注 APP手机界面

    文章 41417 · 浏览 3687

    图片素材

    关注 图片素材

    文章 29463 · 浏览 2922

    高清图片

    关注 高清图片

    文章 26530 · 浏览 3160

    更多 推荐作者

    关注 怎麽继续

    文章 90 · 评论 2

    关注 溫柔的溫柔

    文章 91 · 评论 0

    关注 莪很迷茫

    文章 97 · 评论 0

    关注 流浪的脚步

    文章 86 · 评论 0

    关注 籹孒不认输

    文章 94 · 评论 0

    关注 凉城梦镜

    文章 79 · 评论 0

    
    顶部 反馈 评论 底部

    意见反馈

    感谢您对问说网的支持,提出您在使用过程中遇到的问题或宝贵建议,您的反馈对我们产品的完善有很大帮助。

    您的反馈我们已收到!

    感谢您提供的宝贵意见,我们会在1-2个工作日,通过您留下的联系方式将处理结果反馈给您!