2013-08-29 50 views
2

当用户点击取消时,使用ckeditor链接,图像和表格属性对话框时,CKEDITOR将检查是否有任何更改,如果是,用js提示用户确认弹出。如何删除CKEDITOR对话框中的默认onCancel确认提示?

如何在取消时禁用此提示;我们的Web应用程序中没有其他对话框会提示取消,这不一致。

似乎没有办法获得事件的所有处理程序的列表,以删除正在执行提示的事件。

我不想为每个对话项目指定一个自定义的isChanged来修改一个虚假的nothings。

是否有一个标准方法来覆盖CKEDITOR中('cancel',...)事件处理程序的基础?我发现我可以monkeypatch dialogdefinition.OnLoad,OnOK,OnCancel处理程序,但是这个强制取消提示我指的是没有在对话框的OnCancel中完成。

我使用的是最新版本4.2

回答

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取消cancel事件到其他注册的事件侦听器的冒泡前的处理程序。

CKEditor Ticket #8331: Ability to ignore "Confirm Cancel"-warning on dialogs

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

+0

而不是增加一个“新答案”,你应该已经upvoted现有的答案提供此信息,因为其他人会想什么你的答案和那个之间的区别。 – AlfonsoML

+0

感谢您的反馈。我的声誉得分不允许投票(可能阻止人们创建虚假账户并投票自己的答案),但我会尽可能地继续尝试。我非常感谢你的指导一切:)。 –