[英]execute js function after tinymce is loaded
我有一個選擇onchange觸發一個js功能來顯示/隱藏tinymce編輯器:
<select id="mySelect" onChange="myFuntion()">
<option value="1">Yes</option>
<option value="0">No</option>
然后我有一個帶有tinymce的textarea(在頁面加載時加載)。
<textarea class="mce" id="myTextarea"></textarea>
<script src="tinymce.js></script> // file with global tinymce.init({ ... });
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
一切都很好,除了“ $(document).ready(function(){myFuntion();}); ”拋出錯誤“ Uncaught TypeError:無法讀取屬性' show'of null ”,我認為因為tinymce是尚未加載。
有一種方法可以改變“文件就緒功能”,“當加載tinymce時>執行myFunction()”
PS:我使用tinymce 4,tinymce.init()在外部文件上並在其他頁面上使用,所以我不想編輯這個文件
編輯:我的實際解決方法是使用:setTimeout(function(){myFunction();},1500); 但如果有回調或類似,例如$(document).on('tinymce:init')會很棒
在tinymce 4嘗試使用Promise
tinymce.init({
//some settings
}).then(function(editors) {
//what to do after editors init
});
要添加Kim Gysen寫的答案......您可以始終使用JavaScript來逐頁修改/擴展標准init。
例如,從標准配置開始:
baseConfig = {
selector: 'textarea'
....
}
...因為這只是一個簡單的JavaScript對象,您可以在使用它來初始化TinyMCE之前將其他屬性/方法注入該對象。
例如:
customConfig = {
setup: function (editor) {
editor.on('init', function () {
//Do what you need to do once TinyMCE is initialized
});
}
}
然后你可以將customConfig
“注入” baseConfig
。 最簡單的方法是使用jQuery的extend方法:
$.extend(baseConfig, customConfig);
...這將獲取customConfig
所有方法和屬性,並將它們添加到baseConfig
。 完成后,您可以使用新更新的baseConfig
加載TinyMCE:
tinymce.init(baseConfig);
這種通用技術允許您創建“標准”配置,其中包含所需的所有基本功能,同時逐頁注入其他配置選項。
因此,現在您可以在需要時觸發TinyMCE中的“onInit”功能,而無需修改其他地方使用的核心配置。
根據文檔,您必須聲明回調如下:
function myCustomOnInit() {
alert("We are ready to rumble!!");
}
tinyMCE.init({
...
oninit : myCustomOnInit
});
這是他們提供的手柄,以確保tinyMCE准備就緒。
你在這說什么:
我使用tinymce 4,tinymce.init()在外部文件上,並在其他頁面上使用,所以我不想編輯這個文件
對我來說沒有多大意義。
根據文件:
oninit:此選項使您可以指定在所有編輯器實例完成初始化時要執行的函數。 這很像HTML頁面的onload事件。
非常清楚這是你應該去的方式。
聲明tinymce.init()
位置tinymce.init()
,只需確保添加要執行的函數即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.