一尘不染

多次AJAX刷新和TinyMCE出现问题

ajax

所以我遇到了这种困境。

<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给他们。我不确定为什么它会在第一次而不是随后的时间起作用。


阅读 560

收藏
2020-07-26

共1个答案

一尘不染

重新加载之前,应正确关闭tinymce,以便在重新加载后能够重新初始化tinymce编辑器。这是必要的,因为tinymce不喜欢被拖到dom周围。初始化的编辑器实例可能具有一个唯一的ID(使用重载将迫使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);
2020-07-26