getSelection()。addRange(range)适用于所有浏览器但不适用于Microsoft Edge

时间:2016-03-08 17:57:14

标签: javascript

选择节点到光标位置。它适用于所有浏览器,但不适用于Microsoft Edge。没有脚本错误。但是Edge没有选择节点/文本吗?

   var selection = frames[1].getSelection();
   node = selection.anchorNode;
   
   node = node.parentNode;

   if(node) {
      var range = document.createRange();
      range.selectNodeContents(node);
      frames[1].getSelection().addRange(range);
   }

2 个答案:

答案 0 :(得分:2)

我在Edge中遇到类似的问题,解决方法是在添加新范围之前删除所有范围。

...
selection.removeAllRanges();
selection.addRange(range);

答案 1 :(得分:0)

我遇到了同样的问题。看起来Edge的Range.toString()实现无法正常工作。因此,在第2277行(rangy-core.js)上注释掉该方法已经解决了这个问题:

//rangeProto.toString = function() {
//    return this.nativeRange.toString();
//};

此后,Rangy将使用自己的toString

问题#368已针对此问题打开。

干杯!