选区API
最后更新于:2022-04-01 23:43:08
###选区API
以下是与选择区域有关的API,**下面有些API在IE8、9可能无效,但是不会报错**。
*使用下面的API,最好要了解一下`javascript`的`range`和`selection`的基础知识。如果要兼容IE8、9,还有了解IE8、9特有的`selection`和 `textRange`的知识。*
-----
- **`editor.currentRange`**
获取或者设置当前的选中区域,例如
```js
var range = editor.currentRange(); // 获取
editor.currentRange(range); // 设置
```
-----
- **`editor.collapseRange`**
折叠传入的选区,或者当前选区。例如:
```js
editor.collapseRange(); // 折叠当前选区,到结束位置
editor.collapseRange(range); // 折叠传入的选区,到结束位置
editor.collapseRange(null, 'start'); // 折叠当前选区,到开始位置
editor.collapseRange(range, 'start'); // 折叠传入的选区,到开始位置
```
-----
- **`editor.getRangeText`**
获取当前选区的文字内容,例如
```js
var rangeText = editor.getRangeText();
```
-----
- **`editor.getRangeElem`**
获取当前选区所在的容器元素,不会是`text node`,而是`elem node`。例如
```js
var elem = editor.getRangeElem();
```
-----
- **`editor.isRangeEmpty`**
判断当前选区有没有选中文字内容。**说明:如果鼠标拖拽选择了若干个文字,那就是有选中内容;如果鼠标点击了某个地方,为选中文字,只有光标闪烁,那就是无选中内容**
```js
if ( editor.isRangeEmpty() ) {
console.log('当前选区无选中内容');
}
```
-----
- **`editor.saveSelection`**
将传入的选区对象或者从浏览器捕获的选区,保存为编辑器的当前选区。
```js
editor.saveSelection(); // 捕获浏览器的选区,保存
editor.saveSelection(range); //将传入的选区对象,保存为当前选区
```
-----
- **`editor.restoreSelection`**
将编辑器的当前选区,或者传入的选区对象,恢复为浏览器能看得见的选择区域。
```js
editor.restoreSelection(); // 恢复当前选区为浏览器的选择区域
editor.restoreSelection(range); // 将传入的选区对象,恢复为浏览器的选择区域
```
-----
- **`editor.restoreSelectionByElem`**
将传入的`elem`元素,作为选区,恢复为浏览器的选择区域。
```js
// 获取编辑器的最后一个 p 元素
var $p = editor.$txt.find('p').last();
var p = $p.get(0);
if (!p) {
return;
}
editor.restoreSelectionByElem(p); // 回复选区至最后一个 p,折叠到结束位置结束位置
editor.restoreSelectionByElem(p, 'start'); // 回复选区至最后一个 p,折叠到结束位置开始位置
```
';