我一直遇到一些问题,有人可能会将代码从其他地方粘贴到CKeditor中,打开HTML标记,或者包括不应该关闭的标记。
我注意到当视图从Source更改为HTML时,标记是平衡的。因此,这会在加载时发生,并且在切换Source时,但不会在保存时发生。
要查看此操作,请查看来源,输入一些带有开放标记但没有匹配结束标记的HTML,查看HTML版本,查看来源 - 它已修复。
即使这意味着快速切换到Source然后再转换为HTML,如何在保存时触发此标记平衡?
答案 0 :(得分:1)
我不确定它是否是正确的方法。当我检查Source
按钮时,它调用一个函数CKEDITOR.tools.callFunction(52, this);
。
由于从HTML降价切换到预览模式,编辑器会自动关闭标记,在保存之前,您可以切换到预览模式以强制它关闭打开的标记。
var editor = CKEDITOR.replace( 'editor1', {} );
var isSourceOn = false;
function saveMyEditor() {
if(isSourceOn)
CKEDITOR.tools.callFunction(52, this);
}
editor.on('instanceReady', function( event ){
editor.on( 'mode', function( evt ){
if(editor.mode != 'source') {
isSourceOn = false;
} else {
isSourceOn = true;
}
});
});
修改强> 你能试试这个:
var editor = CKEDITOR.replace( 'editor1', {} );
editor.commands.source.exec();
正确切换源按钮。因此,在保存之前,您可以切换到实时预览然后保存。所以它会关闭标签。
答案 1 :(得分:0)
我认为最好的方法是在用户切换到源模式时禁用提交按钮。这样,您就可以在将数据发送到服务器之前避免模式之间的闪烁。请查看这个非常基本的codepen,以了解它是如何工作的。
var editor = CKEDITOR.replace( 'editor1', {
} );
editor.on('instanceReady', function( event ){
var submitBut = document.getElementById('my-submit'),
submitWarn = document.getElementById('submit-warn');
editor.on( 'mode', function( evt ){
if( editor.mode == 'source') {
submitBut.disabled = true;
submitWarn.style.display = 'inline';
} else{
submitBut.disabled = false;
submitWarn.style.display = 'none';
}
});
})