|
|
@@ -8,6 +8,7 @@ import {afterRenderEvent} from "../wysiwyg/afterRenderEvent";
|
|
|
import {highlightToolbar} from "../wysiwyg/highlightToolbar";
|
|
|
import {processCodeRender} from "../wysiwyg/processCodeRender";
|
|
|
import {setRangeByWbr} from "../wysiwyg/setRangeByWbr";
|
|
|
+import {isSafari} from "../util/compatibility";
|
|
|
|
|
|
class WysiwygUndo {
|
|
|
private undoStack: patch_obj[][];
|
|
|
@@ -64,10 +65,18 @@ class WysiwygUndo {
|
|
|
this.renderDiff(state, vditor, true);
|
|
|
}
|
|
|
|
|
|
- public recordFirstWbr(vditor: IVditor) {
|
|
|
+ public recordFirstWbr(vditor: IVditor, event: KeyboardEvent) {
|
|
|
if (this.undoStack.length !== 1 || this.undoStack[0].length === 0) {
|
|
|
return;
|
|
|
}
|
|
|
+ if (navigator.userAgent.toLowerCase().indexOf("firefox") > -1 && event.key === "Backspace") {
|
|
|
+ // Firefox 第一次删除无效
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (isSafari()) {
|
|
|
+ // Safari keydown 在 input 之后,不需要重复记录历史
|
|
|
+ return;
|
|
|
+ }
|
|
|
getSelection().getRangeAt(0).insertNode(document.createElement("wbr"));
|
|
|
const cloneEditorElement = document.createElement("pre");
|
|
|
cloneEditorElement.innerHTML = vditor.wysiwyg.element.innerHTML;
|