Ueditor里的【ZeroClipboard is not defined】的解决方法

来源:互联网 发布:java浅蓝色代码 编辑:程序博客网 时间:2024/06/05 05:54

最近在研究uedito编辑器,但在测试的时候老是报错ZeroClipboard is not defined,以下是个人解决方法:

经查看代码后发现 ueditor.../third-party/zeroclipboard/ZeroClipboard.js中 输出方法的地方是酱紫的

复制代码
  if (typeof define === "function" && define.amd) {    define(function() {      return ZeroClipboard;    });  } else if (typeof module === "object" && module && typeof module.exports === "object" && module.exports) {    module.exports = ZeroClipboard;  } else {    window.ZeroClipboard = ZeroClipboard;  }
复制代码

意思就是说

  • 如果当前页面的模块加载模式是AMD的 则定义模块
  • 如果是CommonJs的,则输出到模块 ZeroClipboard
  • 否则 把 ZeroClipboard 定义为全局变量

这样 解决方案就有两种。

①不使用模块加载模式来使用这个功能

这样方法需要修改一点源码,把上面这段代码替换成如下代码即可

复制代码
  if (typeof define === "function" && define.amd) {    define(function() {      return ZeroClipboard;    });  } else if (typeof module === "object" && module && typeof module.exports === "object" && module.exports) {    module.exports = ZeroClipboard;  }  window.ZeroClipboard = ZeroClipboard;
复制代码

 

②如果不修改源码,就得在模块加载时做处理了

首先是修改配置

require.config({    baseUrl: '',    paths: {        ZeroClipboard: "./UEditor.../ZeroClipboard"//主要是加这句话    }});

然后是在调用这个模块并把模块定义到全局变量

require(['ZeroClipboard'], function (ZeroClipboard) {    window['ZeroClipboard'] = ZeroClipboard;});

 

完工


1 1