我正在实现一个插件,并且需要一个用例来检测用户何时选择所有内容。我尝试创建一个像const selectAllSelection = editor.model.createSelection(editor.model.document.getRoot(), 'in')
这样的全选,并与当前的model.document.selection
进行比较,但是它们并不相同。
答案 0 :(得分:1)
这些选择有些不同,因为使用createSelection()
创建的选择将直接从<$root>
开始。实际文档选择将从第一个<paragraph>
内部开始。这使得比较有点棘手。
但是,还不错:
selection.getFirstRange()
),然后使用model.createRangeIn( editor.model.document.getRoot() )
在根目录中创建一个范围,range.isEqual()
。我们需要使用isTouching()
检查开始位置和结束位置。这看起来或多或少是这样的:
function doesSelectAll( selection ) {
if ( selection.rangeCount != 1 ) {
return false;
}
const firstSelectionRange = selection.getFirstRange();
const rootRange = editor.model.createRangeIn( editor.model.document.getRoot() );
return firstSelectionRange.start.isTouching( rootRange.start ) && firstSelectionRange.end.isTouching( rootRange.end );
}