[英]Get multiple elements from document.getSelection()
如何获取用户从document.getSelection()
选择的多个元素?
document.getElementById("hello").onclick = function() {
selection = document.getSelection();
if(selection) {
console.log(selection.anchorNode.textContent);
}
};
http://jsbin.com/qisawudofa/edit?html,js,console,output
它似乎只返回首先选择的元素,但在我的情况下,我需要获得所有这些元素。
或者,有没有办法至少知道何时选择了多个元素?
您可能最感兴趣的是组成选择的Ranges
。 请记住,用户可以在整个页面上进行多项选择。 每个连续的选择区域都将获得自己的Range
实例。
您需要迭代所有范围。 对于每个人,您可以看到它的起始位置和结束位置:
if (selection) {
for (i=0; i<selection.rangeCount; i++) {
range = selection.getRangeAt(i);
if (range) {
console.log(range.startContainer);
console.log(range.endContainer);
}
}
}
但是对于代码中描述的示例,您还需要考虑两件事:
只有当用户非常准确地选择段落时,才会在startContainer
获得段落的节点。 他们可能会在段落开头后开始选择一个字符,然后你会得到一个文本节点,段落作为其父节点。
Range
仅为您提供该Range
选择的开始和结束。 它并不直接为您提供介于两者之间的所有元素。 因此,如果用户选择了超过2个段落,您需要自己确定哪些段落在开始和结束之间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.