我正在使用Clojurescript开发单页应用程序,我想将TinyMCE用作某些字段的WYSIWYG编辑器。为了提高空间效率,我想最终在高级模式下使用google clojure编译器缩小项目。由于tinymce dev javascript文件似乎不适合用作extern文件,因此我不得不自己编写。
有一个特殊的函数调用,我无法工作。在clojurescript中,我打电话给:
(.setContent (.get js/tinymce id) cont)
我认为它会编译成类似的东西:
tinymce.get(id).setContent(cont);
我在外部尝试了很多不同的函数定义,但我一直收到错误:
TypeError: tinymce.get(...).Tl is not a function
这告诉我setContent被编译器遮挡了。我当前的extern文件如下所示:
//all seems to be well here...
var tinymce;
tinymce.get = function(name){};
tinymce.remove = function(node){};
tinymce.init = function(editor){};
tinymce.on = function(name, callback, prepend, extra){};
//tinymce setContent attempts
var tinymce.Editor;
tinymce.Editor.prototype.setContent = function(content){};
tinymce.Editor.setContent = function(content){};
tinymce.get(name).setContent = function(content){};
tinymce.get(name).prototype.setContent = function(content){};
var Editor;
Editor.prototype.setContent = function(content){};
Editor.setContent = function(content){};
目前这种做法是什么,一切都是针对墙壁和看到什么棒的尝试。对象get(name)返回应该在命名空间tinymce.Editor中。
是否有正确的方法来编写外部函数以捕获这些链式函数调用?或者有没有办法重写第一个代码片段,以便我的externs正确保留函数名称?谢谢你提前。
答案 0 :(得分:0)
这一行:
getClass()
在JS中在语法上是不正确的:
var tinymce.Editor;
删除它并离开这一行:
SyntaxError: missing ; before statement
这应该可以正常工作。
此外,您可能总是回退到通过字符串文字访问属性,这些文字永远不会被重命名:
tinymce.Editor.prototype.setContent = function(content){};