动态获取TinyMCE设置(将它们应用到另一个init)

时间:2016-04-21 13:52:57

标签: jquery tinymce

如何获得TinyMCE settings

我想从第一个编辑器中获取它们并存储在变量中(只要有问题的脚本不依赖于id来获取设置,第一个或最后一个并不重要)。然后,在需要时,将它们与tinyMCE.init一起使用以初始化新编辑器。

var mysettings = $(".tinymce").last().GETEDITORSETTINGS;
$(".button").click(function(){
   mysettings.selector = ".newtextarea";
   tinyMCE.init(mysettings);
});

2 个答案:

答案 0 :(得分:3)

有两种基本方法可以解决这个问题......

选项1 - 抓取当前设置

tinymce.activeEditor.settings会为您提供一个包含当前TinyMCE实例设置的对象。然后,您可以以任何方式操作此操作,以便为要实例化的新编辑器实例创建新的init对象。 (您也可以使用tinymce.get().settings来定位特定实例,而不是活动编辑器。

选项2 - (推荐)使用默认初始化并在每次需要时将其克隆

另一个选项(以及我建议的那个)是在页面上创建一个“默认”init对象作为JavaScript变量,然后再引用它。例如:

var default_init = {
    theme: "modern",
    plugins....,
    toolbar....
}

...然后当你想调用TinyMCE实例时,可以使用该基础对象来创建你的init:

var first_init = jQuery.extend({}, default_init);
first_init.selector = ".first_textarea";
tinymce.init(first_init);

var second_init = jQuery.extend({}, default_init);
second_init.selector = ".second_textarea";
tinymce.init(second_init);

(如果你没有使用jQuery,你可以编写自己的对象克隆方法,而不是使用extend() - 搜索SO,你会发现很多例子。你不需要一个典型的深层副本init所以浅拷贝算法就足够了。

答案 1 :(得分:2)

您也可以在没有jQuery的情况下做类似的事情:

// get current settings
let settings = tinymce.activeEditor.settings;
// define what you need
settings.height=150;
// set new settings to the editor
tinymce.init(settings);
// re-add the editor in the vue
tinyMCE.EditorManager.execCommand('mceAddEditor',true, mceu_7); 
// mceu_7 = editor ID