完成编辑后如何关闭羽毛笔编辑器
How to close the quill editor when done with editing
我在 DOM 中的元素的单击事件上动态实例化 QuillJS 编辑器。所以我的要求是,一旦用户完成对该元素的编辑,he/she 应该能够关闭编辑器。目前,我在 quill API 中没有看到任何关闭方法。 enable/disable API 方法对我不起作用,因为我想完全关闭编辑器并向用户显示 he/she 在看到 quill 编辑器之前的相同视图,但当然使用已保存的变化。
这个demo可以看这里
https://codepen.io/curiousdj/pen/eEjbPK
const options = { theme: "snow" };
var divs = document.getElementsByTagName("div");
var initializeQuill = function (e){
if(!this.quill){
console.log(e);
this.target = event.currentTarget;
this.quill = new Quill(this.target, options);
this.target.children[0].onclick = function(et) { et.preventDefault(); };
this.target.children[0].onblur = function(l) {
l.target.parentElement.quill.close;
};
}
this.quill.focus();
e.stopPropagation();
e.preventDefault();
}
for(var i = 0; i < divs.length; i++){
divs[i].onclick = initializeQuill;
}
您可以尝试在内容div上设置contenteditable="false"
。
我会建议:
- 复制 quill 实例的内容,销毁实例绑定的 DOM 元素,创建一个新的 DOM 元素并将内容粘贴回
- 正如您已经尝试过的那样,通过 API 使用禁用,但也设置禁用的 Quill 实例的样式,以不显示 Quill 格式与您自己的格式之间的任何区别。
我已经更新了你的笔 here 以提供具有基本更改的第二个选项的示例
.ql-editor {
padding:0;
line-height:inherit;
}
.ql-editor p {
margin-bottom:10px;
}
.ql-toolbar {
display:none;
}
.ql-container.ql-snow {
border:none;
font-family:inherit;
font-size:inherit;
}
这对我有用:
function destory_editor(selector){
if($(selector)[0])
{
var content = $(selector).find('.ql-editor').html();
$(selector).html(content);
$(selector).siblings('.ql-toolbar').remove();
$(selector + " *[class*='ql-']").removeClass (function (index, css) {
return (css.match (/(^|\s)ql-\S+/g) || []).join(' ');
});
$(selector + "[class*='ql-']").removeClass (function (index, css) {
return (css.match (/(^|\s)ql-\S+/g) || []).join(' ');
});
}
else
{
console.error('editor not exists');
}
}
要使用它,只需调用:
destory_editor('.editor');
我在 DOM 中的元素的单击事件上动态实例化 QuillJS 编辑器。所以我的要求是,一旦用户完成对该元素的编辑,he/she 应该能够关闭编辑器。目前,我在 quill API 中没有看到任何关闭方法。 enable/disable API 方法对我不起作用,因为我想完全关闭编辑器并向用户显示 he/she 在看到 quill 编辑器之前的相同视图,但当然使用已保存的变化。
这个demo可以看这里
https://codepen.io/curiousdj/pen/eEjbPK
const options = { theme: "snow" };
var divs = document.getElementsByTagName("div");
var initializeQuill = function (e){
if(!this.quill){
console.log(e);
this.target = event.currentTarget;
this.quill = new Quill(this.target, options);
this.target.children[0].onclick = function(et) { et.preventDefault(); };
this.target.children[0].onblur = function(l) {
l.target.parentElement.quill.close;
};
}
this.quill.focus();
e.stopPropagation();
e.preventDefault();
}
for(var i = 0; i < divs.length; i++){
divs[i].onclick = initializeQuill;
}
您可以尝试在内容div上设置contenteditable="false"
。
我会建议:
- 复制 quill 实例的内容,销毁实例绑定的 DOM 元素,创建一个新的 DOM 元素并将内容粘贴回
- 正如您已经尝试过的那样,通过 API 使用禁用,但也设置禁用的 Quill 实例的样式,以不显示 Quill 格式与您自己的格式之间的任何区别。
我已经更新了你的笔 here 以提供具有基本更改的第二个选项的示例
.ql-editor {
padding:0;
line-height:inherit;
}
.ql-editor p {
margin-bottom:10px;
}
.ql-toolbar {
display:none;
}
.ql-container.ql-snow {
border:none;
font-family:inherit;
font-size:inherit;
}
这对我有用:
function destory_editor(selector){
if($(selector)[0])
{
var content = $(selector).find('.ql-editor').html();
$(selector).html(content);
$(selector).siblings('.ql-toolbar').remove();
$(selector + " *[class*='ql-']").removeClass (function (index, css) {
return (css.match (/(^|\s)ql-\S+/g) || []).join(' ');
});
$(selector + "[class*='ql-']").removeClass (function (index, css) {
return (css.match (/(^|\s)ql-\S+/g) || []).join(' ');
});
}
else
{
console.error('editor not exists');
}
}
要使用它,只需调用:
destory_editor('.editor');