3

为什么会这样'cannot call method getContent of undefined',这怎么可能?它使用 tinyMCE 设置我的文本区域,但不能执行 getContent。

tinyMCE.init({
            plugins: 'paste',
            theme : "advanced",
            mode : "specific_textareas",
            editor_selector : element,
            width : width,
            theme_advanced_buttons1 : "bold,italic,underline,strikethrough,bullist,numlist,undo,redo,",
            theme_advanced_buttons2 : "",
            theme_advanced_buttons3 : "",
            theme_advanced_toolbar_location : "top",
            theme_advanced_toolbar_align : "left",
            content_css : "hhhng.css",
            paste_text_sticky : true,
            //select pasteAsPlainText on startup
            setup : function(ed) {
                    ed.onInit.add(function(ed) {
                    ed.pasteAsPlainText = true;
                });
            }
});
var x = tinyMCE.get(element).getContent();

更新

当我通过按钮单击调用时可以工作,但为什么在tinymce 初始化后它不能立即工作?是的,它位于文档就绪块中。这对我来说没有意义:S

$("#button").click( function(e) {

    e.preventDefault();
    console.log(tinyMCE.activeEditor.getContent());

});
4

2 回答 2

6

即使它位于文档就绪块中,也可能是 TinyMCE 在调用 init 时不会立即创建自己。如果您想在初始化后运行代码,那么您应该查看它是否提供了传递回调函数的方法。一旦它自己准备好,它就会调用这个函数。

实际上,您似乎已经在使用这样的函数和这段代码:

//select pasteAsPlainText on startup
setup : function(ed) {
        ed.onInit.add(function(ed) {
        ed.pasteAsPlainText = true;
    });
}

只需将您的 post init 代码添加到该函数体即可。

于 2012-07-06T11:10:59.113 回答
1

除了 alnorths 答案之外,我还想向您展示如何尽早获取内容。正在创建 tinymce 编辑器实例,这需要一些时间,正如 alnorth 所说,当您请求它时它不存在。

如果您使用 tinymce 配置 (init) 参数设置并在那里设置 onInit 处理程序,您可以请求内容并且编辑器在那里响应。这里是:

setup : function(ed) {

    ed.onInit.add(function(ed, evt) {
        var x = tinyMCE.get(element).getContent();
        console.log(x);
    });
},

...

tinymce onInit 事件在编辑器准备好(待使用)后立即被触发。

于 2012-07-06T12:12:01.570 回答