百度UEditor -- ZeroClipboard is not defined

项目中一直在使用UEditor,风平浪静。

近期该项目引入了Requirejs,结果发现在有富文本编辑器的页面都会在控制台报出如下异常:

Uncaught ReferenceError: ZeroClipboard is not defined ueditor.all.min.js:265

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

 

1
2
3
4
5
6
7
8
9
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 定义为全局变量

这样 解决方案就有两种。

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

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

1
2
3
4
5
6
7
8
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;

 

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

首先是修改配置

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

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

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

转载于:https://www.cnblogs.com/Ting-log/p/9105488.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值