博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【ZeroClipboard is not defined】的解决方法
阅读量:6991 次
发布时间:2019-06-27

本文共 1292 字,大约阅读时间需要 4 分钟。

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

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

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

 

经查看代码后发现 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;});

 

完工

 

转载于:https://www.cnblogs.com/TiestoRay/p/4997195.html

你可能感兴趣的文章
实现Android ListView 自动加载更多内容
查看>>
高淇Struts2.0教程之视频笔记(6)
查看>>
python二进制读写文件
查看>>
sql server 高可用性技术总结
查看>>
近阶段学习总结(EasyUI的使用)
查看>>
第二次作业
查看>>
JSTL 运算符汇总
查看>>
IOS UIlabel 、UIButton添加下划线
查看>>
iOS 屏幕原点坐标 && 导航栏风格的自定义
查看>>
美女相册案例
查看>>
Spring配置文件详解
查看>>
Vue学习计划基础笔记(五) - 表单输入绑定、组件基础
查看>>
php验证字符串是否以逗号隔开包括中文字符串
查看>>
性能测试基础知识
查看>>
hdu 3466 Proud Merchants 01背包变形
查看>>
Codeforces 623D [Amazing概率题]
查看>>
React 点击删除列表中对应项(React 获取DOM中自定义属性)
查看>>
VIPM 发布功能总结
查看>>
sql server存儲過程語法
查看>>
msbuild ignore project dependencies问题
查看>>