如何判断页面上的 TinyMCE 是否为 initiated/created?

How to tell if TinyMCE is initiated/created on a page?

我有一个带有 canvas 的页面,用户可以在其中使用 "add text" 按钮添加文本。当用户单击它时,将在 canvas 上创建一个新的 TinyMCE。我想更改这个新的 TinyMCE,但是因为我无法访问 tinyMCE 创建代码(init),所以我必须在我的 `document.ready()' 中为 TinyMCE 设置某种 "on init listener"。

我知道你可以像这样在 TinyMCE 的初始化上进行回调:

setup: function (ed) {
    ed.on('init', function(args) {
        console.debug(args.target.id);
    });
}

但是正如我所说,我无法访问 TinyMCE 的创建代码。

如何检查是否已创建新的 TinyMCE 实例(并在 Javascript 中使用它)?

如果您的页面为您提供了一个配置对象,但您想调整它的设置,您可以随时使用 JavaScript 到 modify/extend 逐页使用标准初始化程序。

例如,从您的标准配置开始:

baseConfig = {
    selector: 'textarea'
    ....
}

...因为这只是一个简单的 JavaScript 对象,您可以在使用它初始化 TinyMCE 之前将额外的 properties/methods 注入该对象。

例如:

 customConfig = {
    image_advtab: true,
    content_css : "CSS/content.css?"  + new Date().getTime(),
    setup: function (editor) {
        editor.on('init', function () {
            //Do what you need to do once TinyMCE is initialized
        });
    }
}

然后可以"inject"customConfig变成baseConfig。最简单的方法是使用jQuery的扩展方法:

$.extend(baseConfig, customConfig);

...这将从 customConfig 获取所有方法和属性并将它们添加到 baseConfig。完成后,您可以使用新更新的 baseConfig:

加载 TinyMCE
tinymce.init(baseConfig);

您还可以使用 JavaScript 删除属性(阅读 delete),这样您也可以删除您在 TinyMCE 初始化中不需要的配置属性。