我正在尝试获取范围对象中的所有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*/;
Run Code Online (Sandbox Code Playgroud)
我一直在考虑过去几个小时的方法,并想出了这个:
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]
|| …Run Code Online (Sandbox Code Playgroud) 如何从window.getSelection().getRangeAt(0)中选择并用HTML标记(例如'span'或'mark')将其包围?我更喜欢直接的javascript或jQuery解决方案.
我能够使用警报输出所选文本,但还没有弄清楚如何用额外的标记来包围它.我已经看到很多关于选择运行execCommand的例子,但这不是我想要的.
请参阅jsfiddle的工作示例
有任何想法吗?谢谢