Redactor在Chrome中无法添加文字样式和删除选中的文字

2018-05-07 · 🙈Ray · 0条 · 218次

Redactor在Chrome浏览器中无法使用加粗(B)、倾斜(I)等字体样式,同时也无法删除选中的文本(删除时会删除选中文本的前一个字符),原因是调用Range.insertNode的时候重置了选中的内容,导致无法添加样式。解决方法是在Redactor添加选中标记以及获取节点的时候恢复选中的文本。

下面是stackoverflow里找到的解释和解决方法:

I think I may have found the solution: It seems that Chrome 58 (sometimes) resets the selection when we call Range.insertNode.
The solution I suggest is to restore the selection when the Redactor adds the selection markers: In the createMarkers function, right after setting the node2 marker, you can add this function call: this.caret.set(node1, 0, node2, 0);

找到 redactor.js 文件,在 createMarkers() 方法中添加如下代码:

if (this.utils.browser('chrome')) {
    this.caret.set(startNode, 0, endNode, 0);
}

getNodes() 方法中添加:

if (this.utils.browser('chrome')) {
this.caret.set(startNode, 0, endNode, 0); }

修改后的代码:

a583fd0a80-createmarker


  2