我正在开发一个插件,当 TinyMCE 用作可视化编辑器时,使用 TinyMCE 命令将文本插入正文内容编辑区域。目前,它仅通过运行命令即可工作。如果它工作,那么 TinyMCE 是活动的,如果没有,那么我有自定义 JS 用于与 HTML 编辑器一起工作。
但是,我的问题是:有什么方法可以检查 TinyMCE 是否处于活动状态,而不是只运行命令并在不运行时让它失败?
我正在开发一个插件,当 TinyMCE 用作可视化编辑器时,使用 TinyMCE 命令将文本插入正文内容编辑区域。目前,它仅通过运行命令即可工作。如果它工作,那么 TinyMCE 是活动的,如果没有,那么我有自定义 JS 用于与 HTML 编辑器一起工作。
但是,我的问题是:有什么方法可以检查 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。当您切换回 HTML 编辑器模式时,您可以使用该isHidden()
方法确保它没有执行。
TinyMCE 网站和论坛上的记录很少。
是的,我在 wordpress 上看到了该代码:ABSPATH/wp-includes/js/autosave.js 文件
// (bool) is rich editor enabled and active
var rich = (typeof tinyMCE != "undefined") && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden();
由于这个问题在搜索引擎中排名。当我们在单个页面中有多个 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
}
我希望这个小功能对其他人有帮助:)
根据 WordPress editor.js,我们可以轻松检查:
if ( window.wpActiveEditor ) {
// editor active
}else {
// not active
}