Backspace不适用于Firefox中的Contenteditable div

时间:2014-04-02 03:39:59

标签: javascript jquery firefox range contenteditable

我使用以下程序插入文本并将光标更新为contenteditable div。 (这是一个自动完成功能。)

var sel, range;
if (window.getSelection) {
    // IE9 and non-IE
    sel = window.getSelection();
    if (sel.getRangeAt && sel.rangeCount) {
        range = sel.getRangeAt(0);
        range.deleteContents();

        // Range.createContextualFragment() would be useful here but is
        // non-standard and not supported in all browsers (IE9, for one)
        var el = document.createElement("div");
        el.innerHTML = node;
        var frag = document.createDocumentFragment(), node, lastNode;
        while ((node = el.firstChild)) {
            lastNode = frag.appendChild(node);
        }
        range.insertNode(frag);

        // Preserve the selection
        if (lastNode) {
            range = range.cloneRange();
            range.setStartAfter(lastNode);
            range.collapse(true);
            sel.removeAllRanges();
            sel.addRange(range);
        }
    }
}
else if (document.selection && document.selection.type != "Control") {
    // IE < 9
    document.selection.createRange().pasteHTML(node);
}

文本正确插入光标位置,光标正确更新。但是,问题(我只能在Firefox中重现)如下:

  1. 使用上述程序插入文本。

  2. 通过关注其他元素,将注意力从contenteditable div上移开。

  3. 现在再次返回contenteditable div

  4. 将光标移至最后。

  5. 尝试退格按钮。

  6. 它不会删除文字。 (Backspace不起作用。)

0 个答案:

没有答案