1. 程式人生 > >Ueditor裡的【ZeroClipboard is not defined】的解決方法

Ueditor裡的【ZeroClipboard is not defined】的解決方法

報錯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;
});