使用javascript定制Contenteditable行为

目前在firefox下,当我按下一个contenteditable段落中的return时,它会插入一个br标签创建一个新的段落标签,然后在该新段落中放置一个br标签。 我想修改这样的行为

  • Shift + enter = br标签(这已经是默认)
  • 输入重复的当前元素是它,p,li,h1..etc并删除任何尾随或前导(W3C规范要求我可以使用的一些事件,但我一点都不知道如何实现它们。
  • 元素开始处的退格会将其与前面的同胞进行合并(如果存在)
  • 如果存在,则在元素末尾删除将与下一个兄弟合并。
  • 我尝试过捕获按键并检查返回键,删除键和退格键,但我似乎无法准确获取当前的插入位置,或者如果我重写它,以防止默认行为。

    如果有人知道如何去做,我会发现它最有帮助。

  • 获取和/或设置可理解段落中的当前插入位置。
  • 防止contenteditable的默认行为
  • 附加W3C推荐要求的事件。 http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-eventgroupings-mutationevents
  • 也许有人甚至知道已经有这种行为的用户代理(浏览器)。 这是可以接受的。

    谢谢,

    丹尼尔


    要编辑内容可编辑的行为,我会这样做:

    $("#editable").bind("keypress",function(e){
       if(e.keyCode==13 && e.shiftKey){ //enter && shift
          e.preventDefault(); //Prevent default browser behavior
          this.html(this.html+"<br>");
       }
    });
    

    你可以编辑html函数中的内容。 PS:我不记得jQuery是否在事件对象上有shiftKeykeyCode ...如果出现任何问题, e.originalEvent e更改为e.originalEvent

    获取carret位置 :在非IE中:

    document.getSelection().anchorOffset
    
    链接地址: http://www.djcxy.com/p/74321.html

    上一篇: Customizing Contenteditable behavior with javascript

    下一篇: contenteditable change events