javascript - 对于 window,如何知道来自两个不同节点的文本?

  显示原文与译文双语对照的内容
0 0

我有这个代码,我将选定的文本 inside 设置为一个 span,它使用。 当我尝试从两个不同的div或者是任何两个标签的文本中尝试'标记'时,我会得到一个错误: Uncaught Error: BAD_BOUNDARYPOINTS_ERR: DOM Range Exception 1

这是我的代码:


function highlightSelection() {
var selection;



//Get the selected stuff
 if(window.getSelection) 
 selection = window.getSelection();
 else if(typeof document.selection!="undefined")
 selection = document.selection;

//Get a the selected content, in a range object
 var range = selection.getRangeAt(0);

//If the range spans some text, and inside a tag, set its css class.
 if(range &&!selection.isCollapsed)
 {
 var span = document.createElement('span');
 span.className = 'highlight-green';
 range.surroundContents(span);
 }
}

使用 onmouseup 事件调用 highlightSelection() 。 致谢 !

时间: 原作者:

0 0

仅当范围的内容可以在单个节点中被包围时,范围的surroundContents() 方法才有效。 这是相当直观的例子。 因此,大括号表示范围边界,以下是确定的:


One {two} three
One {two <b>three</b> four} five

。以下情况不确定:


One {two <b>three} four</b> five
One <b>two {three</b> <i>four} five</i>

Insetad,我建议使用 document.execCommand() 为选择应用 background 颜色,因为这将处理所有这些东西。 我已经提供了代码在堆栈之前在堆栈 overflow 上执行这里操作。

如果需要应用类,可以使用我的Rangy 库的类应用程序模块。

原作者:
...