有多个AJAX刷新和TinyMCE的问题

时间:2013-02-20 02:37:01

标签: javascript jquery ajax tinymce

所以我遇到了这种困境。

<SCRIPT src="../js/tiny_mce/tiny_mce.js"></script>
<SCRIPT type="text/javascript">
   tinyMCE.init({
        mode : "textareas",
        theme : "simple"
   });
</SCRIPT>
<SCRIPT src="../js/admin.js"></script>

以上是在我的PHP页面上调用的。

我正在打电话

var request = $.ajax(
{
   url:"getEvents.php",
   type:"POST",
   data:{'method':'showevents'},
   dataType:"html"
   }).done(function(msg){
        $('#eventlistbody').html(msg);
   }); 

   setTimeout(
        function(){
            $(".mceSimple").each(function(){
              tinyMCE.execCommand("mceAddControl",false, this.id);
           })
   },2000); 

这会加载一堆textareas ..... tinyMCE将在它第一次返回时加载到所有文本区域。当我点击重新加载时再次运行上面的文本区域并返回它们不再附加tinyMCE的文本区域。 我不确定为什么它第一次运行而不是后续运作。

3 个答案:

答案 0 :(得分:12)

在重新加载之前,您应该正确关闭tinymce,以便在重新加载后能够重新初始化一个tinymce编辑器。这是必要的,因为tinymce不喜欢被拖到dom周围。初始化的编辑器实例可能只有一个唯一的id(使用reload将强制tinymce尝试初始化具有相同id的第二个编辑器 - 这将失败)。

<强> Tinymce3: 要关闭edtor实例,请使用:

tinymce.execCommand('mceRemoveControl',true, editor_id);

重新初始化使用

tinymce.execCommand('mceAddControl',true, editor_id);

<强> Tinymce4: 要关闭edtor实例,请使用:

tinymce.execCommand('mceRemoveEditor',true,editor_id);

重新初始化使用

tinymce.execCommand('mceAddEditor',true,editor_id);

答案 1 :(得分:2)

对我来说tinyMCE.remove(editor_id)工作。

答案 2 :(得分:1)

Tinymce4:要关闭编辑器实例,请使用:

tinymce.remove(); 

或表示一个唯一ID

tinymce.execCommand('mceRemoveEditor',true,editor_id);

重新初始化使用

tinymce.init(conftinymce);

或表示一个唯一ID

tinymce.execCommand('mceAddEditor',true,editor_id);