我有以下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()”返回“假”。'a' 元素完全包含在范围内,从开始到结束,为什么不能使用 'canSurroundContents()' 以及我怎么能,如果可能的话。
谢谢!