如何在编辑器外部单击时关闭 CKEditor 或tinyMCE?
我有可以添加到页面上的文本小部件。单击应该将 div 激活到所见即所得编辑器中。单击编辑器外部的任何位置都会破坏编辑器,并将新内容写入 div。
在准备回调的文档中:
var ckeditorConfig = {
toolbar :
[
[ 'Bold', 'Italic', '-', 'NumberedList', 'BulletedList', '-', 'Link', 'Unlink' ],
[ 'Font', 'FontSize']
],
toolbarCanCollapse : false,
toolbarLocation : 'top',
resize_enabled : false,
removePlugins : 'maximize,resize',
};
window.ckeditorHover = false;
$('.we-widget-wrapper').hover(
function(){
window.ckeditorHover = true;
},
function(){
window.ckeditorHover = false;
}
);
$('.we-widget-textbox')
.click(function(e){
e.stopPropagation();
var id = "" + $(this).attr('id');
if (CKEDITOR.currentInstance){
CKEDITOR.currentInstance.destroy();
}
CKEDITOR.replace(id, ckeditorConfig);
});
$('html')
.click(function(e){
if(!window.ckeditorHover){
if (CKEDITOR.currentInstance){
CKEDITOR.currentInstance.destroy();
}
}
});
html部分:
<div class='we-widget-wrapper'>
<div id='textbox01' class='we-widget-textbox we-widget'>
<p>Some text here...</p>
</div>
</div>
我将两者都包装在 we-widget-wrapper 类中,因为 CKEditor 暂时隐藏我的 div 并在其下方附加它自己的 div,我想捕获鼠标是否位于编辑器上或在小部件 div 上。
这工作得很好,除了当我快速单击 div 时,它的外部编辑器和 div 都会消失。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这是您需要放置在按钮 onclick 操作上以关闭 CKEditor 的代码
This is the code you would need to place on a button onclick action to close CKEditor
以下是从文本区域中删除 TinyMCE 的方法:
tinyMCE.execCommand('mceRemoveControl', false, 'id');
您还可以使用 'mceAddControl' 或 'mceToggleEditor' 进行更多控制。 'id' 是文本区域的 id 属性。
这应该在您以正常方式启动 TinyMCE 之前起作用,在没有看到源代码的情况下不能更具体!
Here's how to remove TinyMCE from a textarea:
tinyMCE.execCommand('mceRemoveControl', false, 'id');
You can also have 'mceAddControl' or 'mceToggleEditor' for more control. 'id' is the id attribute on the textarea.
This should work pending you've initiated TinyMCE in the normal ways, can't be more specific without seeing your source code!
CKEditor 似乎提供了一个 API 来“stopPropagation”,
所以我的解决方案是在正文上放置一个 onclick 事件,但停止在编辑器上传播 click 事件。
例如
,主体事件将是这样的(好吧,不完全是,只是为了说明)
请参阅 这里
CKEditor seems to provide an API to "stopPropagation"
So my solution would be to put an onclick event on the body, but stop propagation of the click event on the editor.
e.g.
and the body event will be something like this (well, not exactly, but just to illustrate)
see here