contenteditable对图像removeFormat

问题描述:

我想与一个textarea是窗体的一部分同步contenteditable DIV。contenteditable对图像removeFormat

我从DIV拉innerHTML,但我想能够从img标记(粗体,斜体,下划线等)中删除嵌套的格式。在访问div的innerHTML之前删除图像上的任何格式可能会更容易,而不是在html上使用正则表达式。

我可以使用:

document.execCommand('removeFormat', false, null); 

但我怎么可能只去除图像格式?

(我也需要对图像使用ALT标签,似乎不可能execCommand/insertImage来完成。这是正确的吗?我结束了在Contenteditable text editor and cursor position的建议下,用insertHTML AM)

谢谢了!

+2

什么样的图像格式?为什么不走DOM去除格式? – 2013-04-25 08:57:04

以下@ tim-down建议是我尝试导航DOM并从IMG标记中删除文本格式。

奖金将授予更优雅的解决方案。

工作示例这里:http://jsfiddle.net/tjzGg/

function setCaret() { 
    var el = document.getElementById("editable"); 
    recurseDOM(el); 
    el.focus(); 
} 

function recurseDOM(el) { 
    var nIndex = 0; 
    var elNode = el.childNodes[nIndex]; 
    while (elNode) { 
     var tag = elNode.tagName; 
     if (tag) { 
      if (tag.toUpperCase() == 'IMG') { 
       var range = document.createRange(); 
       var sel = window.getSelection(); 
       range.selectNode(elNode); 
       sel.removeAllRanges(); 
       sel.addRange(range); 
       document.execCommand('removeFormat', false, null); 
      } else if (elNode.childElementCount) { 
       recurseDOM(elNode); 
      } 
     } 
     nIndex++; 
     elNode = el.childNodes[nIndex]; 
    } 
}