1

我有一个onUpArrow处理程序需要检查光标是否位于 Draft.js 编辑器中第一行的开头。编辑器可能包含多行/块。

我发现SelectionState诸如getAnchorOffset()and之类的方法getStartOffset()可以通过返回来告诉我光标位于行0首,但是该值会在任何行/块的开头返回,而不仅仅是编辑器中的第一个。

问题引用了“获取文档的开始或结束或获取确切的光标位置”,但它似乎并未将其纳入草稿源。

有谁知道一种方法来检测光标是否位于编辑器内容的开头?

4

2 回答 2

2

根据您的检查,这editorState.getCurrentContent().getBlockMap().first().getKey() === selectionState.getAnchor/FocusKey()

于 2016-11-02T06:23:52.687 回答
1

下面是我如何使用标准handleKeyCommand函数来检测我是否位于 DraftJS 编辑器第一行开头的示例:

handleKeyCommand(command, editorState) {

  const selectionState = editorState.getSelection()

  const firstline = (editorState.getCurrentContent().getBlockMap().first().getKey() == selectionState.getFocusKey())

  const startofline = (selectionState.getAnchorOffset() == 0)

  if (firstline && startofline) {
    // Your caret is at the start of the first line of your DraftJS editor.
  }
}
于 2017-09-24T11:08:42.500 回答