Van 5 rokov pred
rodič
commit
ae1248f8f9

+ 2 - 1
src/ts/wysiwyg/index.ts

@@ -96,7 +96,8 @@ class WYSIWYG {
             }
 
             const aElement = hasClosestByMatchTag(range.startContainer, "A");
-            if (aElement) {
+            const aEndElement = hasClosestByMatchTag(range.endContainer, "A");
+            if (aElement && aEndElement && aEndElement.isEqualNode(aElement)) {
                 let aTitle = aElement.getAttribute("title") || "";
                 if (aTitle) {
                     aTitle = ` "${aTitle}"`;

+ 12 - 0
src/ts/wysiwyg/inlineTag.ts

@@ -1,5 +1,17 @@
 import {Constants} from "../constants";
 
+export const previoueIsEmptyA = (node: Node) => {
+    let previousNode = node.previousSibling as HTMLElement;
+    while (previousNode) {
+        if (previousNode.nodeType !== 3 && previousNode.tagName === "A" && !previousNode.previousSibling
+            && previousNode.textContent.replace(Constants.ZWSP, "") === "" && previousNode.nextSibling) {
+            return previousNode;
+        }
+        previousNode = previousNode.previousSibling as HTMLElement;
+    }
+    return false;
+};
+
 export const nextIsCode = (range: Range) => {
     let nextNode: HTMLElement = range.startContainer.nextSibling as HTMLElement;
     while (nextNode && nextNode.textContent === "") {

+ 4 - 5
src/ts/wysiwyg/input.ts

@@ -1,4 +1,3 @@
-import {Constants} from "../constants";
 import {
     getTopList,
     hasClosestBlock, hasClosestByAttribute,
@@ -11,6 +10,7 @@ import {addP2Li} from "./addP2Li";
 import {afterRenderEvent} from "./afterRenderEvent";
 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,11 +44,10 @@ export const input = (vditor: IVditor, range: Range, event: IHTMLInputEvent) =>
         && event.inputType !== "formatIndent"
         && event.inputType !== ""   // document.execCommand('unlink', false)
     ) {
-        if (blockElement.firstElementChild && blockElement.firstElementChild.tagName === "A" &&
-            blockElement.firstElementChild.textContent.replace(Constants.ZWSP, "") === "" &&
-            blockElement.firstElementChild.nextSibling) {
+        const previousAEmptyElement = previoueIsEmptyA(range.startContainer)
+        if (previousAEmptyElement) {
             // 链接结尾回车不应该复制到下一行 https://github.com/Vanessa219/vditor/issues/163
-            blockElement.firstElementChild.remove();
+            previousAEmptyElement.remove();
         }
 
         // 保存光标