CKEDITOR添加键盘监听后,当编辑的内空清空时,键盘监听变成无效

网络科技 2013-04-02 09:26:55
代码如下:

<!DOCTYPE html>
<html>
<head>
<title>测试ctrl+Enter</title>

<script type="text/javascript" src="ckeditor/ckeditor.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

</head>
<body>
<textarea name="ckeditorContent" id="ckeditorContent" cols="80" rows="30"></textarea>

<script type="text/javascript">
CKEDITOR.replace('ckeditorContent');

function keydown(e){
if(e.keyCode==13&&e.ctrlKey)
{
alert('按下了ctrl+Enter');
CKEDITOR.instances['ckeditorContent'].setData("");//加了这句后,再次按下ctrl+Enter,认不到了,怎么解决?
}
}


CKEDITOR.on('instanceReady', function (e) {

if(e.editor.document.$.addEventListener)
e.editor.document.$.addEventListener('keydown',keydown,false);
else if(e.editor.document.$.attachEvent)
e.editor.document.$.attachEvent('onkeyup',function(e){keydown(e)});
});
</script>
</body>
</html>

注释掉: CKEDITOR.instances['ckeditorContent'].setData("");
这句,则一切正常,但我要不得不用这句,怎么办?请大虾指点。。。
...全文
318 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
linfeng0306 2014-09-18
  • 打赏
  • 举报
回复
好用,非常感谢
网络科技 2013-04-02
  • 打赏
  • 举报
回复
引用 1 楼 functionsub 的回复:
粗略的看了下源代码,每次清空的时候好像是会重新构建一个document 改成这样可以解决问题,但是不知道有没有新的问题了。。 XML/HTML code?1234567891011121314151617181920212223242526272829303132333435363738<!DOCTYPE html><html> <head> <tit……
你这个方法,也可行。。。
网络科技 2013-04-02
  • 打赏
  • 举报
回复
引用 2 楼 showbo 的回复:
操作DOM来清空内容,好像调用ckeditor的api来清空事件会丢失,楼主有空可以自己研究下这个方法干了什么东东。。 JavaScript code?12 //CKEDITOR.instances['ckeditorContent'].setData(""); CKEDITOR.instances['cked……
有空去研究下,ckeditor要了解的东东,也真的不少啊。 好了,结了,再次感谢
Go 旅城通票 2013-04-02
  • 打赏
  • 举报
回复
操作DOM来清空内容,好像调用ckeditor的api来清空事件会丢失,楼主有空可以自己研究下这个方法干了什么东东。。
                //CKEDITOR.instances['ckeditorContent'].setData("");
                CKEDITOR.instances['ckeditorContent'].document.$.body.innerHTML = '';
functionsub 2013-04-02
  • 打赏
  • 举报
回复
粗略的看了下源代码,每次清空的时候好像是会重新构建一个document 改成这样可以解决问题,但是不知道有没有新的问题了。。

<!DOCTYPE html>
<html>
  <head>
    <title>测试ctrl+Enter</title>
             
       <script type="text/javascript" src="ckeditor.js"></script>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />      
 
  </head>
  <body>
    <textarea name="ckeditorContent" id="ckeditorContent" cols="80" rows="30"></textarea>
     
    <script type="text/javascript">
        CKEDITOR.replace('ckeditorContent');
         
        function keydown(e){
          if(e.keyCode==13&&e.ctrlKey)
          {
          alert('按下了ctrl+Enter');
           CKEDITOR.instances['ckeditorContent'].setData("",function(){
                if(this.document.$.addEventListener) 
                     this.document.$.addEventListener('keydown',keydown,false);
                 else if(this.document.$.attachEvent)
                     this.document.$.attachEvent('onkeyup',function(e){keydown(e)});  
           });//加了这句后,再次按下ctrl+Enter,认不到了,怎么解决?
           }
        }       
         
              
            CKEDITOR.on('instanceReady', function (e) { 
            if(e.editor.document.$.addEventListener) 
                 e.editor.document.$.addEventListener('keydown',keydown,false);
             else if(e.editor.document.$.attachEvent)
                 e.editor.document.$.attachEvent('onkeyup',function(e){keydown(e)});  
            });
     </script> 
  </body>  
</html>

87,927

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧