From cc9cf8d00f307897eed6d4e5427bda7f2f56b11d Mon Sep 17 00:00:00 2001 From: myml Date: Thu, 28 Oct 2021 11:47:05 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=89=80=E8=A7=81?= =?UTF-8?q?=E5=8D=B3=E6=89=80=E5=BE=97=E6=A8=A1=E5=BC=8F=E4=B8=8B,?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=AF=AD=E8=A8=80=E9=80=89=E6=8B=A9=E5=9C=A8?= =?UTF-8?q?firefox=E4=B8=8D=E5=B7=A5=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在firefox中使用所见即所得模式,编辑```插入代码,选择语言回车无效 控制台报错`i.startContainer.firstElementChild is null` 原因是range.startContainer在firefox和chrome表现不一致 在chrome中startContrainer是input的父元素,在firefox中是input本身 --- src/ts/hint/index.ts | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/ts/hint/index.ts b/src/ts/hint/index.ts index 961fa639e..9a43ad61a 100644 --- a/src/ts/hint/index.ts +++ b/src/ts/hint/index.ts @@ -148,15 +148,22 @@ ${i === 0 ? "class='vditor-hint--current'" : ""}> ${html}`; return; } } - if (vditor.currentMode === "wysiwyg" && range.startContainer.nodeType !== 3 && - (range.startContainer as HTMLElement).firstElementChild.classList.contains("vditor-input")) { - const inputElement = (range.startContainer as HTMLElement).firstElementChild as HTMLInputElement; - inputElement.value = value.trimRight(); - range.selectNodeContents(inputElement); - range.collapse(false); - inputElement.dispatchEvent(new CustomEvent("input")); - this.recentLanguage = value.trimRight(); - return; + if (vditor.currentMode === "wysiwyg" && range.startContainer.nodeType !== 3 ) { + const startContainer = range.startContainer as HTMLElement; + let inputElement: HTMLInputElement; + if(startContainer.classList.contains("vditor-input")) { + inputElement = startContainer as HTMLInputElement; + } else { + inputElement = startContainer.firstElementChild as HTMLInputElement; + } + if (inputElement && inputElement.classList.contains("vditor-input")) { + inputElement.value = value.trimRight(); + range.selectNodeContents(inputElement); + range.collapse(false); + inputElement.dispatchEvent(new CustomEvent("input")); + this.recentLanguage = value.trimRight(); + return; + } } range.setStart(range.startContainer, this.lastIndex);