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