当使用ckeditor链接,图像和表属性对话框时,如果用户点击取消,CKEDITOR将检查是否有任何更改,如果是,则提示用户使用js确认弹出窗口。
如何在取消时禁用此提示;我们的webapp中没有其他对话框提示取消,这是不一致的。
似乎没有办法获取事件的所有处理程序列表以删除正在执行提示的事件。
我不想为每个对话框项目指定一个自定义的isChanged来修改虚假的更改。
是否有一种标准方法可以覆盖CKEDITOR中的('cancel',...)事件处理程序的基础?我看到我可以monkeypatch dialogdefinition.OnLoad,OnOK,OnCancel处理程序,但这个强制取消提示我指的是没有在对话框的OnCancel中完成。
我使用的是最新版本4.2
答案 0 :(得分:3)
现在,这是版本4.3中受支持的配置选项。只需在创建对话框时指定config.dialog_noConfirmCancel = true
即可。
查看http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-dialog_noConfirmCancel
答案 1 :(得分:0)
你在哪里非常接近。实际上它实际上是onCancel
事件。
这个问题的票证还包括一个解决方法:
CKEDITOR.on('dialogDefinition', function(dialogDefinitionEvent) {
if (dialogDefinitionEvent.data.name == 'link') {
var dialogDefinition = dialogDefinitionEvent.data.definition;
// Get rid of annoying confirmation dialog on cancel
dialogDefinition.dialog.on('cancel', function(cancelEvent) {
return false;
}, this, null, -1);
}
});
如果省略if (dialogDefinitioNEvent.data.name == 'link')
语句,则会禁用所有对话框的检查。
这里的-1
处理程序参数是关键,因为它在对话框插件的默认处理程序之前插入处理程序,永远不会调用它,因为return false
取消了取消事件冒泡到另一个注册事件听众。
CKEditor Ticket #8331: Ability to ignore "Confirm Cancel"-warning on dialogs
答案 2 :(得分:0)
我可以确认最新版本的ckEditor适用于" noConfirmCancel"属性。
我的工作代码片段如下:
<script type="text/javascript" src="#ckBasePath#/ckeditor.js" language="JavaScript"></script>
<script>
thisConfig = CKEDITOR.config;
thisConfig.autoParagraph = true;
thisConfig.fillEmptyBlocks= true;
thisConfig.dialog_noConfirmCancel = true;
objSample = CKEDITOR.replace( 'Sample' , thisConfig);
</script>
http://docs.ckeditor.com/#!/api/CKEDITOR.config-cfg-dialog_noConfirmCancel