如何在一个可信的div(Dart)中设置并获得插入位置?

时间:2015-11-22 16:30:30

标签: dart dart-polymer shadow-dom dart-html

如何在一个可信的div中设置和获取插入位置?

我对一个方法感兴趣,当一个contenteditable div在web组件(带阴影dom)内时也可以工作。

1 个答案:

答案 0 :(得分:1)

以下代码似乎有效。如果你不使用影子dom,你可以使用:
var root = window;

请注意,使用当前的Dartium版本(2015年11月),有一个错误会导致getCaretPosition无法正常使用阴影dom。它在使用最新的chrome编译为javascript后工作。

int getCaretPosition(Element element) {
  dynamic root = element.shadowRoot ?? window;
  return root.getSelection().getRangeAt(0).endOffset;
}

void setCaretPosition(Element element, int position) {
  final range = document.createRange()
    ..setStart(element, position)
    ..setEnd(element, position);

  dynamic root = element.shadowRoot ?? window;
  root.getSelection()
    ..removeAllRanges()
    ..addRange(range);
}

查看Dartpad

上的演示