14

我正在开发一个插件,当 TinyMCE 用作可视化编辑器时,使用 TinyMCE 命令将文本插入正文内容编辑区域。目前,它仅通过运行命令即可工作。如果它工作,那么 TinyMCE 是活动的,如果没有,那么我有自定义 JS 用于与 HTML 编辑器一起工作。

但是,我的问题是:有什么方法可以检查 TinyMCE 是否处于活动状态,而不是只运行命令并在不运行时让它失败?

4

4 回答 4

25

而且...我已经为自己回答了这个问题。您要测试的条件如下:

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

诀窍是tinyMCE.activeEditor在 TinyMCE 未激活时返回 null。当您切换回 HTML 编辑器模式时,您可以使用该isHidden()方法确保它没有执行。

TinyMCE 网站和论坛上的记录很少。

于 2009-07-24T21:18:56.517 回答
7

是的,我在 wordpress 上看到了该代码:ABSPATH/wp-includes/js/autosave.js 文件

// (bool) is rich editor enabled and active
var rich = (typeof tinyMCE != "undefined") && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden();
于 2009-11-16T11:41:34.797 回答
2

由于这个问题在搜索引擎中排名。当我们在单个页面中有多个 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
}

我希望这个小功能对其他人有帮助:)

于 2015-07-14T06:24:07.327 回答
0

根据 WordPress editor.js,我们可以轻松检查:

    if ( window.wpActiveEditor ) {
       // editor active
    }else {
       // not active
    }
于 2020-03-02T10:32:16.490 回答