tinymce加载后执行js函数

ipe*_*pel 3 javascript jquery tinymce document-ready

我有一个选择 onchange 触发 js 函数来显示/隐藏tinymce编辑器:

<select id="mySelect" onChange="myFuntion()">
<option value="1">Yes</option>
<option value="0">No</option>
Run Code Online (Sandbox Code Playgroud)

然后我有一个带有tinymce的文本区域(在页面加载时加载)。

<textarea class="mce" id="myTextarea"></textarea>
<script src="tinymce.js></script> // file with global tinymce.init({ ... });
Run Code Online (Sandbox Code Playgroud)

js函数如下:

<script>    
function myFuntion(){ 
  if( $( '#mySelect' ).val() == '1' ) { tinymce.get( 'myTextarea' ).show(); } 
  else { tinymce.get( 'myTextarea' ).hide(); }
}
$( document ).ready(function() { myFuntion(); }); // show/hide tinymce based on how the mySelect setting is on page load
Run Code Online (Sandbox Code Playgroud)

一切都很好,除了“ $( document ).ready(function(){ myFuntion(); }); ”抛出错误“ Uncaught TypeError: Cannot read property 'show' of null ”,我认为这是因为tinymce是尚未加载。

有一种方法可以用“当tinymce加载时>执行myFunction()”来更改“文档就绪函数”

PS:我使用tinymce 4,tinymce.init()位于外部文件上并在其他页面上使用,所以我不想编辑此文件

编辑: 我的实际解决方法是使用: setTimeout( function(){ myFunction(); }, 1500 ); 但如果有回调或类似的,例如 $(document).on('tinymce:init') 会很棒

Rud*_*chi 8

在tinymce 4中尝试使用Promise

tinymce.init({
//some settings
}).then(function(editors) {
   //what to do after editors init
});
Run Code Online (Sandbox Code Playgroud)