要选择节点的内容,请调用:window.getSelection().selectAllChildren(
document.getElementById(id));
这适用于所有现代浏览器,包括IE9 +(在标准模式下)。
可运行的例子:function select(id) {
window.getSelection()
.selectAllChildren(
document.getElementById("target-div")
);}#outer-div { padding: 1rem; background-color: #fff0f0; }#target-div { padding: 1rem; background-color: #f0fff0; }button { margin: 1rem; }
Some content for the
Target DIV
以下原始答案已经过时,因为window.getSelection().addRange(range); 已被弃用
原答案:
以上所有示例均使用:var range = document.createRange();
range.selectNode( ... );
但问题在于它选择了Node本身,包括DIV标签等。
要根据OP问题选择节点的文本,您需要调用:range.selectNodeContents( ... )
所以完整的代码片段是:function selectText( containerid ) {
var node = document.getElementById( containerid );
if ( document.selection ) {
var range = document.body.createTextRange();
range.moveToElementText( node );
range.select();
} else if ( window.getSelection ) {
var range = document.createRange();
range.selectNodeContents( node );
window.getSelection().removeAllRanges();
window.getSelection().addRange( range );
}
}