私は次のhtmlを持っています:
<p>Morbi quis augue vitae quam <a href="#">pharetra| varius</a> at at| urna.</p>
選択範囲は文字でマークされてい|
ます。また、選択のスクリーンショット:
この選択範囲を拡張して、次のコードスニペットを使用して「a」要素全体を含めることができます(Rangyライブラリhttp://code.google.com/p/rangy/を使用)。
$('body').on('mouseup', '[contenteditable]', function() {
var block = this,
sel = rangy.getSelection(),
range = sel.getRangeAt(0);
if (sel.anchorNode.parentNode !== block) {
range.setStartBefore(sel.anchorNode);
sel.setSingleRange(range, false);
sel.refresh();
}
});
実際の動作を確認するには、http://jsfiddle.net/LTwkZ/1/を確認してください。
また、以下はtrueを返します。
range.containsNode(anchorNode);
問題は、「range.canSurroundContents()」が「false」を返すことです。'a'要素は、最初から最後まで、範囲に完全に含まれています。'canSurroundContents()'を使用できない理由と、可能であれば、どうすればよいですか。
ありがとう!