Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何设置和获取内容可编辑div(Dart)中的插入符号位置?_Dart_Dart Polymer_Shadow Dom_Dart Html - Fatal编程技术网

如何设置和获取内容可编辑div(Dart)中的插入符号位置?

如何设置和获取内容可编辑div(Dart)中的插入符号位置?,dart,dart-polymer,shadow-dom,dart-html,Dart,Dart Polymer,Shadow Dom,Dart Html,如何设置和获取contenteditable div中的插入符号位置 我对一种方法感兴趣,这种方法在contenteditable div位于webcomponent(带阴影dom)中时也可以工作。以下代码似乎可以工作。如果不使用阴影dom,则可以使用: var root=window 请注意,在当前的Dartium构建(2015年11月)中,存在一个bug,它会阻止getCaretPosition正确使用阴影dom。在最新的chrome中编译成javascript后,它就可以工作了 int g

如何设置和获取contenteditable div中的插入符号位置


我对一种方法感兴趣,这种方法在contenteditable div位于webcomponent(带阴影dom)中时也可以工作。

以下代码似乎可以工作。如果不使用阴影dom,则可以使用:
var root=window

请注意,在当前的Dartium构建(2015年11月)中,存在一个bug,它会阻止
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);
}
请在查看演示