dart - 如何在contenteditable div(Dart)中设置和获得插入符号位置?

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

如何在内容可编辑的div中设置并获得插入符号位置?

我对当contenteditable div位于web组件(带有阴影dom)内部时也可以使用的方法感兴趣。

最佳答案

以下代码似乎有效。如果您不使用Shadow dom,则可以使用:var root = window;
请注意,在当前的Dartium版本(2015年11月)中,存在一个错误,该错误会阻止getCaretPosition与shadow 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上查看演示

关于dart - 如何在contenteditable div(Dart)中设置和获得插入符号位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33857181/

相关文章:

Dart 聚合物自定义元素动态链接

javascript - 如何在dart中编写on-*事件/回调注册

internet-explorer - 使用 polymer 组件制作的网站/应用程序在 IE11 上加载速度极慢

javascript - 将 ajax 调用中的 html 附加到影子 DOM

javascript - 访问自定义元素 Shadow dom 的子元素

javascript - html 自定义元素使主机 css 应用于影子 dom 子代

flutter - 如何使用 Map<DateTime, List<Event>> 添加新对(事件是随机类)?

html - 如何使用具有不同文件结构的 Dart Polymer?

dart - <span> 中的 font-awesome for polymer ">0.10.0"

dart - 在 polymer 网格布局中自动调整 Canvas 大小