マウスを使用してhtmlページ(Firefoxで開く)のテキストを選択し、javascript関数を使用して、選択したテキストに対応するrangeobjectを作成/取得します。
userSelection =window.getSelection();
var rangeObject = getRangeObject(userSelection);
ここで、rangeobjectの下にあるすべてのテキストを強調表示したいと思います。このようにしています。
var span = document.createElement("span");
rangeObject.surroundContents(span);
span.style.backgroundColor = "yellow";
これは、rangeobject(開始点と終了点)が同じテキストノードにある場合にのみ正常に機能し、対応するテキストを強調表示します。Ex
<p>In this case,the text selected will be highlighted properly,
because the selected text lies under a single textnode</p>
ただし、rangeobjectが複数のテキストノードをカバーしている場合は、適切に機能していません。最初のテキストノードにあるテキストのみが強調表示されます。例
<p><h3>In this case</h3>, only the text inside the header(h3)
will be highlighted, not any text outside the header</p>
範囲が単一ノードにあるか複数ノードにあるかに関係なく、範囲オブジェクトの下にあるすべてのテキストを強調表示して、どのように作成できますか?ありがとう....