ckeditor注册ctrl+enter快捷键
2013-04-02更新:不要使用ckeditor的setData方法清空编辑器中的内容,此方法会重构iframe的document对象导致之前注册的ctrl+enter事件丢失,直接操作DOM对象清空body的内容即可。一定要调用setData方法,需要重新给新document对象添加事件,由于是异步的,所以需要传递回调函数,具体看最后的示例。
由于ckeditor的编辑窗体是iframe,和父窗体是相互独立的作用域,在iframe中不会响应父窗体注册的任何事件,所以需要单独给ckeditor的iframe编辑器窗体注册事件。
给可编辑的iframe注册事件不能使用document.onxxxx,需要使用接口addEventListener或者attachEvent(IE浏览器),具体参考:当iframe的designMode="On"时,在ff,如何下对iframe添加事件
由于ckeditor的iframe有个初始化的过程,所以需要初始化完毕后再添加事件,ckeditor事件可以参考这篇文章:如何判断ckeditor是否已经加载和初始化完毕
下面为给ckeditor注册ctrl+enter快捷键源代码
<!DOCTYPE HTML> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>CKEditor Sample</title> <meta content="text/html; charset=utf-8" http-equiv="content-type" /> <script type="text/javascript" src="/ckeditor/ckeditor.js"></script> </head> <body><form method="post" action="data.asp"> <textarea cols="80" id="editor_v2" name="editor_v2" rows="10"><p>This is some <strong>sample text</strong>. You are using <a href="http://ckeditor.com/">CKEditor</a>.</p></textarea> <script type="text/javascript"> window.onload = function () { CKEDITOR.replace('editor_v2', { skin: 'v2' }); function keydown(e) { //if(e.keyCode==13&&e.ctrlKey)alert('按下了ctrl+Enter');//IE先判断keyCode有些时候会没反应,奇怪~~ if (e.ctrlKey && e.keyCode == 13) {//改为先判断ctrlKey alert('按下了ctrl+Enter'); //CKEDITOR.instances['editor_v2'].setData("");//调用setData方法会重构document导致之前添加的事件失败 //CKEDITOR.instances['editor_v2'].document.$.body.innerHTML = ''; //直接操作dom清空内容不会重构document,事件依旧生效 //一定要调用setData方法,需要重新给新document对象添加事件,由于是异步的,所以需要传递回调函数 CKEDITOR.instances['editor_v2'].setData("", function () { register_ctrl_enter_event(this.document.$); }); } } function register_ctrl_enter_event(doc) { if (doc.addEventListener) doc.addEventListener('keydown', keydown, false); else if (doc.attachEvent) doc.attachEvent('onkeyup', function (e) { keydown(e); }); } CKEDITOR.on('instanceReady', function (e) { register_ctrl_enter_event(e.editor.document.$); }) } </script> </form> </body> </html>
加支付宝好友偷能量挖...
原创文章,转载请注明出处:ckeditor注册ctrl+enter快捷键