动态添加一个tinymce编辑器

时间:2013-10-03 11:06:25

标签: javascript tinymce

当我显示它时,我有一个带有2个工作的tinymce编辑器的页面。使用用户控件(页面已加载)动态地将Textarea添加到页面中。以下js / coffescript旨在为新的textarea添加一个tinymce编辑器:

$(document).on 'nested:fieldAdded', (event) ->
  tinyMCE.execCommand("mceAddControl", false, event.field.find('textarea').attr("id"))

如果我执行alert event.field.find('textarea').attr("id"),它将返回应添加编辑器的文本字段的正确ID。但是,它不会将tinyMCE添加到textarea。我还可以看到,当显示警报时,页面上存在textarea,我想这意味着当脚本尝试添加tinymce时存在。

在我的身体顶部,我有以下脚本:

<script type="text/javascript">
//<![CDATA[
tinyMCE.init({"selector":"textarea.tinymce","theme_advanced_toolbar_location":"top","theme_advanced_toolbar_align":"left","theme_advanced_statusbar_location":"bottom","theme_advanced_buttons3_add":"tablecontrols,fullscreen","plugins":"paste,table,fullscreen","dialog_type":"modal","content_css":"/assets/application.css"});
//]]>
</script>

我需要更改为我的脚本才能成功将tinyMCE添加到新的textarea?

1 个答案:

答案 0 :(得分:2)

tinymce编辑器将应用的控件需要首先渲染。关键是要求在DOM中添加元素并首先加载。

您可以尝试为脚本添加/应用编辑器添加一些时间延迟。

试试这个(可能会对你有帮助)

制作一个功能

function loadTinyMCEEditor() {
  tinyMCE.init({
  });
}

并在页面完全加载后调用loadTinyMCEEditor(),并将动态控件添加到DOM。