这里只是拿实际应用遇到的问题当个例子, 百度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楼 IP113.209.*.*的嘉宾说道: 很久前
3楼 IP106.50.*.*的嘉宾说道: 很久前
4楼 IP121.69.*.*的嘉宾说道: 很久前