// 自定义 insertHTML 事件
_insertHTML: function (html) {
const editor = this.editor
const range = editor.selection.getRange()
if (this.queryCommandSupported('insertHTML')) {
// W3C
this._execCommand('insertHTML',html)
} else if (range.insertNode) {
// IE
range.deleteContents()
range.insertNode($(html)[0])
} else if (range.pasteHTML) {
// IE <= 10
range.pasteHTML(html)
}
},</code></pre>
详细api
getSelection
返回一个Selection对象,用于表示用户选择的文本范围或插入符的当前位置
const selection = window.getSelection() ;
如果想要将 selection 转换为字符串,可通过连接一个空字符串("")或使用 String.toString() 方法。
Selection.removeAllRanges()
方法会从当前selection对象中移除所有的range对象,取消所有的选择只 留下anchorNode 和focusNode属性并将其设置为null。
Selection.addRange(range)
一个区域(Range)对象将被增加到选区(Selection)当中。
Range
Range表示包含节点和部分文本节点的文档片段。
api:
创建
index指定需要被处理的子集编号(从零开始计数)。如果该数值被错误的赋予了大于或等于 rangeCount 结果的数字,将会产生错误。
range = sel.getRangeAt(index)
详细api:
range.setStart(startNode,startOffset) 设置 Range 的起点
var range = document.createRange();
var startNode = document.getElementsByTagName("p").item(2);
var startOffset = 0;
range.setStart(startNode,startOffset);
range.setEnd(endNode,endOffset)设置 Range 的终点
var range = document.createRange();
var endNode = document.getElementsByTagName("p").item(3);
var endOffset = endNode.childNodes.length;
range.setEnd(endNode,endOffset);
获取光标位置
Chrome用getBoundingClientRect
let rect = window.getSelection().getRangeAt(0).getBoundingClientRect();
1
Safari用getClientRect
let rect = window.getSelection().getRangeAt(0).getClientRects()[0];
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!