在contenteditable div元素(dart)中设置和获取selectionrange / caret位置

时间:2015-02-12 12:28:21

标签: dart selection contenteditable caret

我正在尝试将编辑器的textarea元素用于<div contenteditable="true"></div>元素。我只有一个问题就是我不能再使用textarea.selectionStart, textarea.selectionEnd, textarea.setSelectionRange()了。是否有任何方法可以获取和设置dart中div元素的选择范围?还是一种获得插入位置的方法?

1 个答案:

答案 0 :(得分:1)

import 'dart:html' as dom;

dom.Range range;
dom.DivElement editable;

void main() {
  editable = (dom.document.querySelector('#editable') as dom.DivElement);
  dom.document.onSelectionChange.listen(getRange);
}

void getRange(dom.Event e) {
  if(dom.document.activeElement != editable) {
    return;
  }

  dom.Selection sel = dom.window.getSelection();
  if(sel != null) {
    range = sel.getRangeAt(0);
    print('${range.startOffset} ${range.endOffset}');
  }
}