初始化多个tinymce实例

时间:2016-07-28 01:03:45

标签: javascript tinymce-4

我无法弄清楚如何在我的网页上初始化tinymce的两个实例。

我已经尝试过this question的答案,但没有运气。如果在开始初始化第二个(i)之前需要一些时间来完成初始化第一个(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);

以上引发Uncaught TypeError: Cannot read property 'body' of undefined。 我错过了什么?

3 个答案:

答案 0 :(得分:1)

可能是因为它指向丢失的物体。尝试将您的选择器#auth_info_intro textarea更改为textarea#auth_info_intro#auth_info_conclude textarea,更改为textarea#auth_info_conclude

答案 1 :(得分:0)

(没有足够的声誉为阿尔伯特以色列添加评论)。修复选择器后,代码可以正常工作。这是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>

答案 2 :(得分:0)

显然,初始化第一个实例需要一些时间,因此我在第一个实例的初始化对象的setup参数中设置了超时,而不是仅仅立即尝试初始化第二个实例。这很有效:

 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);