From 8125da9c2cac813e082e34c484c1d21e3d8e3f17 Mon Sep 17 00:00:00 2001 From: Liyuan Li Date: Fri, 10 Apr 2020 16:55:48 +0800 Subject: [PATCH] :bug: fix #295 --- CHANGELOG.md | 1 + src/ts/ir/index.ts | 3 +++ src/ts/ir/processKeydown.ts | 5 ----- src/ts/util/editorCommonEvent.ts | 11 ++++++----- src/ts/wysiwyg/index.ts | 8 ++++++-- src/ts/wysiwyg/processKeydown.ts | 7 ------- 6 files changed, 16 insertions(+), 19 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d350c567..5bc31ac25 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -59,6 +59,7 @@ ### v3.1.4 / 2020-04-0x +* [295](https://github.com/Vanessa219/vditor/issues/295) 全屏模式下打字机行为异常 `修复缺陷` * [294](https://github.com/Vanessa219/vditor/pull/294) 🐛 计算全屏 typewriterMode 位置 `修复缺陷` * [286](https://github.com/Vanessa219/vditor/issues/286) add indent & outdent button `引入特性` * [291](https://github.com/Vanessa219/vditor/pull/291) 🎨 改进 Counter `修复缺陷` diff --git a/src/ts/ir/index.ts b/src/ts/ir/index.ts index 1fb67f230..c6705ecb1 100644 --- a/src/ts/ir/index.ts +++ b/src/ts/ir/index.ts @@ -137,6 +137,9 @@ class IR { if (event.isComposing || isCtrl(event)) { return; } + if (event.key === "Enter") { + scrollCenter(vditor); + } highlightToolbar(vditor); if ((event.key === "Backspace" || event.key === "Delete") && vditor.ir.element.innerHTML !== "" && vditor.ir.element.childNodes.length === 1 && diff --git a/src/ts/ir/processKeydown.ts b/src/ts/ir/processKeydown.ts index e6a8bee5b..c0158eac0 100644 --- a/src/ts/ir/processKeydown.ts +++ b/src/ts/ir/processKeydown.ts @@ -1,5 +1,4 @@ import {isCtrl} from "../util/compatibility"; -import {scrollCenter} from "../util/editorCommonEvent"; import { fixBlockquote, fixCodeBlock, @@ -151,9 +150,5 @@ export const processKeydown = (vditor: IVditor, event: KeyboardEvent) => { return true; } - if (event.key === "Enter") { - scrollCenter(vditor); - } - return false; }; diff --git a/src/ts/util/editorCommonEvent.ts b/src/ts/util/editorCommonEvent.ts index 8dd22892f..e5c0d4206 100644 --- a/src/ts/util/editorCommonEvent.ts +++ b/src/ts/util/editorCommonEvent.ts @@ -24,17 +24,18 @@ export const focusEvent = (vditor: IVditor, editorElement: HTMLElement) => { }; export const scrollCenter = (vditor: IVditor) => { - if (vditor.options.typewriterMode && typeof vditor.options.height === "string") { + if (vditor.options.typewriterMode && typeof vditor.options.height === "string" + && !vditor.element.classList.contains("vditor--fullscreen")) { window.scrollTo(window.scrollX, vditor.element.clientHeight + vditor.element.offsetTop - window.innerHeight); + } - if (typeof vditor.options.height === "number") { + if (typeof vditor.options.height === "number" || vditor.element.classList.contains("vditor--fullscreen")) { const editorElement = vditor[vditor.currentMode].element; const cursorTop = getCursorPosition(editorElement).top; const center = editorElement.clientHeight / 2; if (cursorTop > center) { - editorElement.scrollTop = editorElement.scrollTop + (cursorTop - center); - } - if (cursorTop < 0) { + editorElement.scrollTop = editorElement.scrollTop + (cursorTop - center) + 32; + } else if (cursorTop < 0) { editorElement.scrollTop = editorElement.scrollTop + cursorTop; } } diff --git a/src/ts/wysiwyg/index.ts b/src/ts/wysiwyg/index.ts index 2800561de..125526353 100644 --- a/src/ts/wysiwyg/index.ts +++ b/src/ts/wysiwyg/index.ts @@ -1,6 +1,6 @@ import {uploadFiles} from "../upload"; import {isCtrl, isFirefox} from "../util/compatibility"; -import {focusEvent, hotkeyEvent, selectEvent} from "../util/editorCommonEvent"; +import {focusEvent, hotkeyEvent, scrollCenter, selectEvent} from "../util/editorCommonEvent"; import {isHeadingMD, isHrMD, paste, renderToc} from "../util/fixBrowserBehavior"; import { hasClosestBlock, hasClosestByAttribute, @@ -237,7 +237,11 @@ class WYSIWYG { if (event.isComposing || isCtrl(event)) { return; } - + // 除 md 处理、cell 内换行、table 添加新行/列、代码块语言切换、block render 换行、跳出/逐层跳出 blockquote、h6 换行、 + // 任务列表换行、软换行外需在换行时调整文档位置 + if (event.key === "Enter") { + scrollCenter(vditor); + } if ((event.key === "Backspace" || event.key === "Delete") && vditor.wysiwyg.element.innerHTML !== "" && vditor.wysiwyg.element.childNodes.length === 1 && vditor.wysiwyg.element.firstElementChild && vditor.wysiwyg.element.firstElementChild.tagName === "P" diff --git a/src/ts/wysiwyg/processKeydown.ts b/src/ts/wysiwyg/processKeydown.ts index 603ec99da..49448d70a 100644 --- a/src/ts/wysiwyg/processKeydown.ts +++ b/src/ts/wysiwyg/processKeydown.ts @@ -295,12 +295,5 @@ export const processKeydown = (vditor: IVditor, event: KeyboardEvent) => { }); } } - - // 除 md 处理、cell 内换行、table 添加新行/列、代码块语言切换、block render 换行、跳出/逐层跳出 blockquote、h6 换行、 - // 任务列表换行、软换行外需在换行时调整文档位置 - if (event.key === "Enter") { - scrollCenter(vditor); - } - return false; };