图像上的contenteditable removeFormat

时间:2013-04-24 17:52:59

标签: javascript html5 contenteditable

我正在尝试将可疑的DIV与作为表单一部分的textarea同步。

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

我可以使用:

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

但我怎样才能删除图片上的格式?

(另外我需要在图像上使用ALT标签,而execCommand / insertImage似乎无法完成。这是正确的吗?我最终遵循Contenteditable text editor and cursor position上的建议我正在使用insertHTML

非常感谢!

1 个答案:

答案 0 :(得分:1)

关注@ 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];
    }
}