Van 5 anni fa
parent
commit
dc210c233f

+ 2 - 2
src/ts/undo/WysiwygUndo.ts

@@ -2,13 +2,13 @@ import DiffMatchPatch, {diff_match_patch, patch_obj} from "diff-match-patch";
 import {setSelectionFocus} from "../editor/setSelection";
 import {disableToolbar} from "../toolbar/disableToolbar";
 import {enableToolbar} from "../toolbar/enableToolbar";
+import {isFirefox, isSafari} from "../util/compatibility";
 import {scrollCenter} from "../util/editorCommenEvent";
 import {addP2Li} from "../wysiwyg/addP2Li";
 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[][];
@@ -69,7 +69,7 @@ class WysiwygUndo {
         if (this.undoStack.length !== 1 || this.undoStack[0].length === 0) {
             return;
         }
-        if (navigator.userAgent.toLowerCase().indexOf("firefox") > -1 && event.key === "Backspace") {
+        if (isFirefox() && event.key === "Backspace") {
             // Firefox 第一次删除无效
             return;
         }

+ 4 - 0
src/ts/util/compatibility.ts

@@ -11,6 +11,10 @@ export const isSafari = () => {
     return navigator.userAgent.indexOf("Safari") > -1 && navigator.userAgent.indexOf("Chrome") === -1;
 };
 
+export const isFirefox = () => {
+    return navigator.userAgent.toLowerCase().indexOf("firefox") > -1;
+};
+
 // 用户 iPhone 点击延迟/需要双击的处理
 export const getEventName = () => {
     if (navigator.userAgent.indexOf("iPhone") > -1) {

+ 7 - 0
src/ts/wysiwyg/index.ts

@@ -331,6 +331,13 @@ class WYSIWYG {
             let range = getSelection().getRangeAt(0);
             const startOffset = range.startOffset;
 
+            if (vditor.wysiwyg.element.innerHTML !== "" && vditor.wysiwyg.element.childNodes.length === 1 &&
+                vditor.wysiwyg.element.firstElementChild.tagName === "P"
+                && (vditor.wysiwyg.element.textContent === "" || vditor.wysiwyg.element.textContent === "\n")) {
+                // 为空时显示 placeholder
+                vditor.wysiwyg.element.innerHTML = "";
+            }
+
             // 没有被块元素包裹
             Array.from(vditor.wysiwyg.element.childNodes).find((node: HTMLElement) => {
                 if (node.nodeType === 3) {

+ 2 - 2
src/ts/wysiwyg/input.ts

@@ -8,9 +8,9 @@ import {
 import {log} from "../util/log";
 import {addP2Li} from "./addP2Li";
 import {afterRenderEvent} from "./afterRenderEvent";
+import {previoueIsEmptyA} from "./inlineTag";
 import {processCodeRender} from "./processCodeRender";
 import {setRangeByWbr} from "./setRangeByWbr";
-import {previoueIsEmptyA} from "./inlineTag";
 
 export const input = (vditor: IVditor, range: Range, event: IHTMLInputEvent) => {
     let blockElement = hasClosestBlock(range.startContainer);
@@ -44,7 +44,7 @@ export const input = (vditor: IVditor, range: Range, event: IHTMLInputEvent) =>
         && event.inputType !== "formatIndent"
         && event.inputType !== ""   // document.execCommand('unlink', false)
     ) {
-        const previousAEmptyElement = previoueIsEmptyA(range.startContainer)
+        const previousAEmptyElement = previoueIsEmptyA(range.startContainer);
         if (previousAEmptyElement) {
             // 链接结尾回车不应该复制到下一行 https://github.com/Vanessa219/vditor/issues/163
             previousAEmptyElement.remove();