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 => {