Способ проверить, работает ли TinyMCE в WordPress

Я работаю над плагином, который, когда TinyMCE используется в качестве редактора Visual, использует команды TinyMCE для вставки текста в область редактирования содержимого тела. В настоящее время он работает, просто выполнив команду. Если он работает, то TinyMCE активен, а если нет, то у меня есть пользовательский JS для работы с редактором HTML.

Однако мой вопрос: есть ли способ проверить, активен ли TinyMCE или нет, а не просто запустить команду и не сработает, если это не так?

Ответы

Ответ 1

И... Я ответил на вопрос сам. Условие, которое вы хотите проверить, следующее:

is_tinyMCE_active = false;
if (typeof(tinyMCE) != "undefined") {
  if (tinyMCE.activeEditor == null || tinyMCE.activeEditor.isHidden() != false) {
    is_tinyMCE_active = true;
  }
}

Фокус в том, что tinyMCE.activeEditor возвращает значение null, когда TinyMCE не активирован. Вы можете использовать метод isHidden(), чтобы убедиться, что он не выполняется, когда вы переключаетесь обратно в режим HTML-редактора.

Это плохо документировано на веб-сайте и форумах TinyMCE.

Ответ 2

Да, я увидел этот код в wordpress: файл ABSPATH/wp-includes/js/autosave.js

// (bool) is rich editor enabled and active
var rich = (typeof tinyMCE != "undefined") && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden();

Ответ 3

Поскольку эти вопросы ранжируются в поисковых системах. Я думаю, что я должен немного расширить ответы Daniels, чтобы поддержать, когда у нас есть несколько экземпляров редактора wordpress на одной странице.

    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
}

Если необходимо проверить редактор с определенным идентификатором

if(is_editor_active('mycontent'){
    // do stuff
}

Я надеюсь, что эта небольшая функция будет полезной для других:)