TinyMCE がビジュアル エディターとして使用されている場合、TinyMCE コマンドを使用して本文コンテンツ編集領域にテキストを挿入するプラグインに取り組んでいます。現在、コマンドを実行するだけで動作します。動作する場合は TinyMCE がアクティブです。そうでない場合は、HTML エディターを操作するためのカスタム JS があります。
ただし、私の質問: コマンドを実行してアクティブでないときに失敗させる代わりに、TinyMCE がアクティブかどうかを確認する方法はありますか?
TinyMCE がビジュアル エディターとして使用されている場合、TinyMCE コマンドを使用して本文コンテンツ編集領域にテキストを挿入するプラグインに取り組んでいます。現在、コマンドを実行するだけで動作します。動作する場合は TinyMCE がアクティブです。そうでない場合は、HTML エディターを操作するためのカスタム JS があります。
ただし、私の質問: コマンドを実行してアクティブでないときに失敗させる代わりに、TinyMCE がアクティブかどうかを確認する方法はありますか?
そして... 私は自分で質問に答えました。テストする条件は次のとおりです。
is_tinyMCE_active = false;
if (typeof(tinyMCE) != "undefined") {
if (tinyMCE.activeEditor == null || tinyMCE.activeEditor.isHidden() != false) {
is_tinyMCE_active = true;
}
}
トリックはtinyMCE.activeEditor、TinyMCE がアクティブ化されていないときに null を返すことです。このisHidden()メソッドを使用して、HTML エディター モードに戻ったときにメソッドが実行されていないことを確認できます。
これは、TinyMCE の Web サイトとフォーラムで十分に文書化されていません。
はい、ワードプレスでそのコードを見ました: ABSPATH/wp-includes/js/autosave.js ファイル
// (bool) is rich editor enabled and active
var rich = (typeof tinyMCE != "undefined") && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden();
この質問が検索エンジンでランク付けされたので。1 つのページに wordpress エディターの複数のインスタンスがある場合、サポートするために Daniels の回答を少し拡張する必要があると思います。
var is_editor_active = function(editor_id){
if(typeof tinyMCE == 'undefined'){
return false;
}
if( typeof editor_id == 'undefined' ){
editor = tinyMCE.activeEditor;
}else{
editor = tinyMCE.EditorManager.get(editor_id);
}
if(editor == null){
return false;
}
return !editor.isHidden();
};
用途
アクティブなエディタだけを確認したい場合
if(is_editor_active()){
// do stuff
}
特定の ID を持つエディターをチェックする必要がある場合
if(is_editor_active('mycontent'){
// do stuff
}
この小さな機能が他の人に役立つことを願っています:)