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)
谢谢了!
答
以下@ 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];
}
}
什么样的图像格式?为什么不走DOM去除格式? – 2013-04-25 08:57:04