diff --git a/app/src/menus/protyle.ts b/app/src/menus/protyle.ts index e64a374a6..e5c2af791 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 {writeText} from "../protyle/util/compatibility"; +import {readText, writeText} from "../protyle/util/compatibility"; import {preventScroll} from "../protyle/scroll/preventScroll"; import {onGet} from "../protyle/util/onGet"; import {getAllModels} from "../layout/getAll"; @@ -347,7 +347,7 @@ export const contentMenu = (protyle: IProtyle, nodeElement: Element) => { document.execCommand("paste"); } else { try { - const clipText = await navigator.clipboard.readText(); + const clipText = await readText(); pasteText(protyle, clipText, nodeElement); } catch (e) { console.log(e); @@ -370,7 +370,7 @@ export const contentMenu = (protyle: IProtyle, nodeElement: Element) => { async click() { try { // * _ [ ] ! \ ` < > & ~ { } ( ) = # $ ^ | - let clipText = await navigator.clipboard.readText(); + let clipText = await readText(); // https://github.com/siyuan-note/siyuan/issues/5446 // A\B\C\D\ // E diff --git a/app/src/protyle/toolbar/Link.ts b/app/src/protyle/toolbar/Link.ts index 0754beeb8..2bea6ef49 100644 --- a/app/src/protyle/toolbar/Link.ts +++ b/app/src/protyle/toolbar/Link.ts @@ -2,6 +2,7 @@ import {ToolbarItem} from "./ToolbarItem"; import {linkMenu} from "../../menus/protyle"; import {hasClosestBlock, hasClosestByAttribute} from "../util/hasClosest"; import {focusByRange, focusByWbr} from "../util/selection"; +import {readText} from "../util/compatibility"; export class Link extends ToolbarItem { public element: HTMLElement; @@ -27,7 +28,7 @@ export class Link extends ToolbarItem { const rangeString = range.toString().trim(); let dataHref = ""; try { - const clipText = await navigator.clipboard.readText(); + const clipText = await readText(); // 选中链接时需忽略剪切板内容 https://ld246.com/article/1643035329737 if (protyle.lute.IsValidLinkDest(rangeString)) { dataHref = rangeString; diff --git a/app/src/protyle/util/compatibility.ts b/app/src/protyle/util/compatibility.ts index 39889c843..747a71e09 100644 --- a/app/src/protyle/util/compatibility.ts +++ b/app/src/protyle/util/compatibility.ts @@ -13,6 +13,13 @@ export const openByMobile = (uri: string) => { } }; +export const readText = async () => { + if ("android" === window.siyuan.config.system.container && window.JSAndroid) { + return window.JSAndroid.readClipboard(); + } + return navigator.clipboard.readText(); +} + export const writeText = async (text: string) => { let range: Range; if (getSelection().rangeCount > 0) { diff --git a/app/src/types/index.d.ts b/app/src/types/index.d.ts index 8aae8f7c9..1fc0c28a5 100644 --- a/app/src/types/index.d.ts +++ b/app/src/types/index.d.ts @@ -34,6 +34,7 @@ interface Window { changeStatusBarColor(color: string, mode: number): void writeClipboard(text: string): void writeImageClipboard(uri: string): void + readClipboard(): string } goBack(): void