根據get()
API,您傳遞給該調用的字符串必須是編輯器元素的ID而不是類。
https://www.tinymce.com/docs/api/class/tinymce/#get
所以,如果你想基於ID爲目標的編輯器,你需要的是這樣的:
<textarea class='tiny-mce' id='editor1'></textarea>
<textarea class='tiny-mce' id='editor2'></textarea>
...在你的JavaScript這樣的事情...
tinymce.get('editor2').setContent('...content here...');
如果你只在頁面上有一個編輯器,你也可以使用
tinymce.getActiveEditor().setContent('...content here...');
編輯:這取決於當在編輯器中的生命週期,你要撥打的get()
或activeEditor()
方法。
這些將不會返回任何東西,直到後的TinyMCE完全初始化。如果你有這樣的代碼:
<form method="post" action="dump.php">
<textarea class='tiny-mce' id='editor1'></textarea>
<textarea class='tiny-mce' id='editor2'></textarea>
</form>
<script>
tinymce.get('editor2').setContent("content here");
</script>
這通常會失敗,因爲你如果TinyMCE的結束時,你的JavaScript運行初始化的textareas不知道。請參閱此琴:
http://fiddle.tinymce.com/gufaab/1
將內容加載到編輯器的最佳方法是使用編輯器自己的「初始化」回調,並把你的代碼在那裏。例如:
tinymce.init({
selector: "textarea",
plugins: [
"advlist autolink lists link image charmap print preview anchor",
"searchreplace visualblocks code fullscreen",
"insertdatetime media table contextmenu paste"
],
toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image",
setup: function (editor) {
editor.on('init', function() {
this.setContent('The init function knows on which editor its called - this is for ' + editor.id);
});
}
});
...注意,在init被調用每個編輯者(如果有多個),並在需要時您可以訪問編輯對象的DOM。
使用ID而不是類 - 得到它!謝謝! – Boykodev
實際上,您的方法不起作用。通過元素ID訪問tinyMCE會返回null。 – Boykodev
@Boykodev - 請參閱我的文章的更新。 **當你調用這些方法時很重要 - 如果你知道自己的ID是正確的,那麼它返回null,你可能會在編輯器初始化並準備好進行交互之前調用它。有些API可以用來解決這個問題。 –