javascript – 在可编辑HTML元素中编程选择文本?

在JavaScript中,可以通过编程方式在输入或textarea元素中选择文本。您可以使用ipt.focus()聚焦输入,然后使用ipt.select()选择其内容。甚至可以使用ipt.setSelectionRange(from,to)选择特定范围。

我的问题是:有什么办法在一个可写的元素做到这一点吗?

我发现我可以做elem.focus(),把光标放在一个contenteditable元素,但随后运行elem.select()不工作(也不是setSelectionRange)。我在网上找不到任何东西,但也许我正在寻找错误的东西…

顺便说一下,如果它有什么区别,我只需要它在Google Chrome中工作,因为这是一个Chrome扩展。

如果您想在Chrome中选择元素的所有内容(contenteditable或noted),请按以下步骤操作。这也将在Firefox,Safari 3,Opera 9(也可能是早期版本)和IE 9中工作。您还可以创建低至字符级别的选择。您需要的API是DOM Range(当前规格为DOM Level 2,另请参见MDN)和Selection,它被指定为new Range spec(MDN docs)的一部分。

function selectElementContents(el) {
    var range = document.createRange();
    range.selectNodeContents(el);
    var sel = window.getSelection();
    sel.removeAllRanges();
    sel.addRange(range);
}

var el = document.getElementById("foo");
selectElementContents(el);
http://stackoverflow.com/questions/6139107/programatically-select-text-in-a-contenteditable-html-element

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:javascript – 在可编辑HTML元素中编程选择文本?