选择对象可以在没有任何用户交互的情况下创建吗?

5
能否在没有用户交互的情况下创建一个Selection对象?window.getSelection()可以返回一个Selection对象,但是除非用户进行了某种选择,否则您无法对其进行modify()

是否有可能创建一个从页面上第一个元素开始并能够进行modify()的选择,而不需要用户进行任何操作?

例如:http://jsfiddle.net/niklasvh/L5M3U/

它不会在页面加载时选择任何内容,但如果您单击任何内容,它会进行选择。

1个回答

9

如果我理解您的问题,那么是的,您可以使用addRange()方法编程设置选择。例如,在页面加载时选择整个文档的<body>元素,您可以执行以下操作:

function selectBody() {
    var range = document.createRange();
    range.selectNode(document.body);
    var sel = window.getSelection();
    sel.removeAllRanges();
    sel.addRange(range);
}

window.onload = selectBody;

这在IE < 9上无法正常工作,因为它有完全不同的范围和选择方法。


谢谢!正是我想要的。我知道IE的兼容性问题和它们的TextRange等,这个就可以了。 - Niklas
1
请注意,在 range.selectNode( element ) 中的 element 需要具有 innerHTML 内容,否则此方法将无法正常工作。 - Jonathan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接