From 14a8b1f8a4f3fe918a9aedcf3ff8a9d82ac99807 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Tue, 22 Nov 2022 00:56:37 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20`=E5=A4=8D=E5=88=B6=E7=BA=AF=E6=96=87?= =?UTF-8?q?=E6=9C=AC`=20=E6=97=B6=E7=A7=BB=E9=99=A4=E6=89=80=E6=9C=89?= =?UTF-8?q?=E9=9B=B6=E5=AE=BD=E7=A9=BA=E6=A0=BC=20Fix=20https://github.com?= =?UTF-8?q?/siyuan-note/siyuan/issues/6674?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/menus/protyle.ts | 4 ++-- app/src/protyle/gutter/index.ts | 6 +++--- app/src/protyle/util/compatibility.ts | 6 ++++++ app/src/protyle/wysiwyg/keydown.ts | 4 ++-- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git a/app/src/menus/protyle.ts b/app/src/menus/protyle.ts index bb24652b7..ec60e229b 100644 --- a/app/src/menus/protyle.ts +++ b/app/src/menus/protyle.ts @@ -19,7 +19,7 @@ import {transaction, updateTransaction} from "../protyle/wysiwyg/transaction"; import {openMenu} from "./commonMenuItem"; import {fetchPost} from "../util/fetch"; import {Constants} from "../constants"; -import {readText, writeText} from "../protyle/util/compatibility"; +import {copyPlainText, readText, writeText} from "../protyle/util/compatibility"; import {preventScroll} from "../protyle/scroll/preventScroll"; import {onGet} from "../protyle/util/onGet"; import {getAllModels} from "../layout/getAll"; @@ -296,7 +296,7 @@ export const contentMenu = (protyle: IProtyle, nodeElement: Element) => { cloneContents.querySelectorAll('[data-type="backslash"]').forEach(item => { item.firstElementChild.remove(); }); - writeText(cloneContents.textContent); + copyPlainText(cloneContents.textContent); } }).element); window.siyuan.menus.menu.append(new MenuItem({ diff --git a/app/src/protyle/gutter/index.ts b/app/src/protyle/gutter/index.ts index 38886541b..7a79e745f 100644 --- a/app/src/protyle/gutter/index.ts +++ b/app/src/protyle/gutter/index.ts @@ -3,7 +3,7 @@ import {getIconByType} from "../../editor/getIcon"; import {iframeMenu, setFold, tableMenu, videoMenu, zoomOut} from "../../menus/protyle"; import {MenuItem} from "../../menus/Menu"; import {copySubMenu, openAttr, openWechatNotify} from "../../menus/commonMenuItem"; -import {updateHotkeyTip, writeText} from "../util/compatibility"; +import {copyPlainText, updateHotkeyTip, writeText} from "../util/compatibility"; import { transaction, turnsIntoOneTransaction, turnsIntoTransaction, @@ -591,7 +591,7 @@ export class Gutter { html += cloneNode.textContent + "\n"; }); }); - writeText(html.trimEnd()); + copyPlainText(html.trimEnd()); } }, { label: window.siyuan.languages.copy + " HTML", @@ -966,7 +966,7 @@ export class Gutter { }); text += cloneNode.textContent + "\n"; }); - writeText(text.trimEnd()); + copyPlainText(text.trimEnd()); } }, { label: window.siyuan.languages.copy + " HTML", diff --git a/app/src/protyle/util/compatibility.ts b/app/src/protyle/util/compatibility.ts index fdd0fb075..7fddf65ca 100644 --- a/app/src/protyle/util/compatibility.ts +++ b/app/src/protyle/util/compatibility.ts @@ -1,5 +1,6 @@ import {focusByRange} from "./selection"; import {fetchPost} from "../../util/fetch"; +import {Constants} from "../../constants"; export const openByMobile = (uri: string) => { if (!uri) { @@ -59,6 +60,11 @@ export const writeText = async (text: string) => { } }; +export const copyPlainText = async (text: string) => { + text = text.replace(new RegExp(Constants.ZWSP, "g"), ""); // `复制纯文本` 时移除所有零宽空格 https://github.com/siyuan-note/siyuan/issues/6674 + await writeText(text); +}; + // 用户 iPhone 点击延迟/需要双击的处理 export const getEventName = () => { if (navigator.userAgent.indexOf("iPhone") > -1) { diff --git a/app/src/protyle/wysiwyg/keydown.ts b/app/src/protyle/wysiwyg/keydown.ts index 17ac9d4e6..efbb027dc 100644 --- a/app/src/protyle/wysiwyg/keydown.ts +++ b/app/src/protyle/wysiwyg/keydown.ts @@ -1,5 +1,5 @@ import {hideElements} from "../ui/hideElements"; -import {getEventName, isCtrl, isMac, writeText} from "../util/compatibility"; +import {copyPlainText, getEventName, isCtrl, isMac, writeText} from "../util/compatibility"; import { focusBlock, focusByRange, @@ -1372,7 +1372,7 @@ export const keydown = (protyle: IProtyle, editorElement: HTMLElement) => { html += cloneNode.textContent + "\n"; }); }); - writeText(html.trimEnd()); + copyPlainText(html.trimEnd()); } else { const cloneContents = range.cloneContents(); cloneContents.querySelectorAll('[data-type="backslash"]').forEach(item => {