在JavaScript中,可以以编程方式选择input或textarea元素中的文本.您可以使用ipt.focus()聚焦输入,然后使用ipt.select()
选择其内容.您甚至可以使用ipt.setSelectionRange(from,to)
选择特定范围.
我的问题是:有没有办法在一个满足的元素中做到这一点?
我发现我可以执行elem.focus(),将插入符号放在一个可信的元素中,但随后运行elem.select()不起作用(也没有setSelectionRange).我在网上找不到任何关于它的东西,但也许我正在寻找错误的东西……
顺便说一下,如果它有所不同,我只需要它在谷歌浏览器中工作,因为这是Chrome扩展.
解决方法:
如果您想在Chrome中选择元素的所有内容(是否可信),请按照以下步骤操作.这也适用于Firefox,Safari 3,Opera 9(也可能是早期版本)和IE 9.您还可以创建字符级别的选择.您需要的API是DOM范围(当前规格是DOM Level 2,另见MDN)和选择,它被指定为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);