범위 객체 내에있는 모든 DOM 노드를 가져 오려고하는데이 작업을 수행하는 가장 좋은 방법은 무엇입니까?자바 스크립트로 범위 안에있는 노드를 얻는 방법은 무엇입니까?
var selection = window.getSelection(); //what the user has selected
var range = selection.getRangeAt(0); //the first range of the selection
var startNode = range.startContainer;
var endNode = range.endContainer;
var allNodes = /*insert magic*/;
나는 지난 몇 시간 동안 수있는 방법을 생각이 해낸되어 왔습니다 : 결국 노드가 시작 노드의 부모 인 경우
이var getNextNode = function(node, skipChildren){
//if there are child nodes and we didn't come from a child node
if (node.firstChild && !skipChildren) {
return node.firstChild;
}
if (!node.parentNode){
return null;
}
return node.nextSibling
|| getNextNode(node.parentNode, true);
};
var getNodesInRange = function(range){
var startNode = range.startContainer.childNodes[range.startOffset]
|| range.startContainer;//it's a text node
var endNode = range.endContainer.childNodes[range.endOffset]
|| range.endContainer;
if (startNode == endNode && startNode.childNodes.length === 0) {
return [startNode];
};
var nodes = [];
do {
nodes.push(startNode);
}
while ((startNode = getNextNode(startNode))
&& (startNode != endNode));
return nodes;
};
그러나이 모든 것을 반환 그 페이지. 나는 명백한 무엇인가를 멀리 바라보고있다라고 확신한다? 아니면 완전히 잘못된 방향으로 나아갈 수도 있습니다.
'var에 대해 getSelection C =() getRangeAt (0) .cloneContents().; c.querySelectorAll ('*')' – caub