如何在一个可信的div中设置和获取插入位置?
我对一个方法感兴趣,当一个contenteditable div在web组件(带阴影dom)内时也可以工作。
答案 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
上的演示