我正在开发一个插件,当使用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未激活时,tinyMCE.activeEditor
返回null。可以使用isHidden()
方法来确保在切换回HTML编辑器模式时不执行该操作。
这一点在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();
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
}
if ( window.wpActiveEditor ) {
// editor active
}else {
// not active
}