初始化tinymce的多个实例

initializing multiple instances of tinymce

本文关键字:实例 tinymce 初始化      更新时间:2023-09-26

我不知道如何初始化页面上的两个tinymce实例。

我试过这个问题的答案,但没有成功。如果在开始初始化第二个(co)之前完成初始化第一个(io)需要一些时间,我需要使用超时吗?

var io = {
   selector:"#auth_info_intro textarea",
   ...,
   setup:function(ed){
      ed.on("init",function(e){
         tinyMCE.activeEditor.setContent(obj.INFO.INTRO.TEXT);
      });        
   }
};
var co = {
   selector:"#auth_info_conclude textarea",
   ...,
   setup:function(ed){
      ed.on("init",function(e){
         tinyMCE.activeEditor.setContent(obj.INFO.CONCLUDE.TEXT);
      });         
   }
};
tinymce.init(io);
tinymce.init(co);

以上抛出CCD_ 2。我错过了什么?

这可能是因为它指向了丢失的对象。尝试将选择器#auth_info_intro textarea更改为textarea#auth_info_intro#auth_info_conclude textarea,更改为textarea#auth_info_conclude

(没有足够的声誉为Albert Israel添加评论)。修复选择器后,代码就可以工作了。这是一个jsFiddle。

<textarea id="auth_info_intro"></textarea>
<textarea id="auth_info_conclude"></textarea>
<script>
var obj = {
    INFO: {
    INTRO: {
        TEXT: "Hello World!"
    },
    CONCLUDE: {
        TEXT: "Goodbye World!"
    }
  }
};
var io = {
   selector:"textarea#auth_info_intro",
   setup:function(ed){
      ed.on("init",function(e){
         tinyMCE.activeEditor.setContent(obj.INFO.INTRO.TEXT);
      });        
   }
};
var co = {
   selector:"textarea#auth_info_conclude",
   setup:function(ed){
      ed.on("init",function(e){
         tinyMCE.activeEditor.setContent(obj.INFO.CONCLUDE.TEXT);
      });         
   }
};
tinymce.init(io);
tinymce.init(co);
</script>

显然,初始化第一个实例需要一些时间,所以我在第一个实例的初始化对象的设置参数中设置了一个超时,而不是立即尝试初始化第二个实例。这起到了作用:

 var io = {};
 io.selector = "textarea[name=intro]";
 io.setup = function(ed){
     ed.on("init",function(e){
          tinyMCE.activeEditor.setContent(obj.INFO.INTRO.TEXT);              
          setTimeout(function(){
                var co = {};
                co.selector = "textarea[name=conclude]";
                co.setup = function(ed){
                    ed.on("init",function(e){tinyMCE.activeEditor.setContent(obj.INFO.CONCLUDE.TEXT);});                        
                }
                tinymce.init(co);
          },1000);              
     });
tinymce.init(io);