当使用没有href的锚时,Rangy commonAncestorContainer错误

时间:2014-02-02 06:28:43

标签: angularjs dom range rangy

我将Rangy与AngularJS结合使用。 Angular用ng-click替换href,因此调用函数变为:

<a ng-click='theFunctionThatCallsRangy()'>Get Range</a> 

不幸的是,

range.commonAncestorContainer

返回锚点的节点而不是选择:

<a ng-click='theFunctionThatCallsRangy()'>Get Range</a> 

range.collapsed

返回true。这使我相信单击负责生成范围的锚点会破坏选择,然后才能从选择中创建范围。

我将锚点修改为:

<a href='#' ng-click='theFunctionThatCallsRangy()'>Get Range</a> 

按预期创建范围。但是,添加href ='#'会导致Angular重定向到根域('/')。为<a>换出<button>也有效,但这会破坏现有的CSS。

为什么会这样? Rangy是否希望href出现在锚标签中?解决方法?

1 个答案:

答案 0 :(得分:0)

Rangy仅报告浏览器对其进行选择的内容,并且对href属性是否存在没有意见。正确诊断后,问题是当您单击<a>元素时,现有选择会在click事件触发时被销毁。假设您继续使用这些<a>元素,您的选项是:

演示:http://jsfiddle.net/M6AAy/