這裡只是拿實際應用遇到的問題當個例子, 百度ueditor植入electron遇到了很多坑, 這是其中的一個。由於使用了嚴格模式,ueditor一些語法會無法通過, 只能通過修改寫法來解決問題。
如果直接看ueditor.all.min.js是沒法閲讀的, 這裡我們打開ueditor.all.js來看其中一行代碼:
if (editor.options.wordCount) { function countFn() { setCount(editor,me); domUtils.un(editor.document, "click", arguments.callee); } domUtils.on(editor.document, "click", countFn); editor.ui.getDom('wordcount').innerHTML = editor.getLang("wordCountTip"); }
報錯的代碼就是arguments.callee這部分, 原因是全局採用了use strict也就是嚴格模式, js官方說arguments.callee的代價太高, 故而在今後的語法層面上拋棄了這種寫法, 總之既然要用到js的功能特性, 只好順著人家的想法來, 好了廢話不多說, 我們找到上文不遠處的一行代碼, 查看到這堆代碼是一個閉包内生存的東西, 原文如下:
editor.addListener('ready', function () {
那麽只需要把這個匿名閉包函數隨便起一個名字, 例如WK, 就像這樣:
editor.addListener('ready', function WK() {
ok, 接下來再在對應的位置改掉arguments.callee就可以了:
if (editor.options.wordCount) { function LOOKATME() { setCount(editor,me); domUtils.un(editor.document, "click", WK); } domUtils.on(editor.document, "click", LOOKATME); editor.ui.getDom('wordcount').innerHTML = editor.getLang("wordCountTip"); }
收工。
注意, 在修改時候,要仔細看上下文,找到上一級的匿名閉包函數, 而不是隨便亂找一個起個名對上就行了。
2 樓 IP 113.209.***.224 的嘉賓 说道 : 很久前
3 樓 IP 106.50.***.2 的嘉賓 说道 : 很久前
4 樓 IP 121.69.***.254 的嘉賓 说道 : 很久前