Angularjs 使用不带href的锚点时Rangy commonAncestorContainer错误

Angularjs 使用不带href的锚点时Rangy commonAncestorContainer错误,angularjs,dom,range,rangy,Angularjs,Dom,Range,Rangy,我在使用Rangy和AngularJS。Angular将href替换为ng click,因此调用函数变成: <a ng-click='theFunctionThatCallsRangy()'>Get Range</a> 正在返回定位点的节点而不是选择: <a ng-click='theFunctionThatCallsRangy()'>Get Range</a> 返回true。这让我相信,单击负责生成范围的锚正在破坏选择,然后才能从选择中创

我在使用Rangy和AngularJS。Angular将href替换为ng click,因此调用函数变成:

<a ng-click='theFunctionThatCallsRangy()'>Get Range</a> 
正在返回定位点的节点而不是选择:

<a ng-click='theFunctionThatCallsRangy()'>Get Range</a> 
返回true。这让我相信,单击负责生成范围的锚正在破坏选择,然后才能从选择中创建范围

一旦我将锚点修改为:

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

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


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

Rangy只报告浏览器告诉它的关于选择的内容,而对
href
属性是否存在没有意见。正如您正确诊断的那样,问题在于当您单击一个
时,它显然会有自己的后果

演示:

我发现添加href=''既可以确保现有选择不会被破坏,也可以将当前页面保存在视图中。
range.collapsed
<a href='#' ng-click='theFunctionThatCallsRangy()'>Get Range</a>