牛骨文教育服务平台(让学习变的简单)

选区API

选区API

以下是与选择区域有关的API,下面有些API在IE8、9可能无效,但是不会报错

使用下面的API,最好要了解一下javascriptrangeselection的基础知识。如果要兼容IE8、9,还有了解IE8、9特有的selectiontextRange的知识。


  • 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,折叠到结束位置开始位置