From e0003064f15c91882483b72146ce0330ec4f7592 Mon Sep 17 00:00:00 2001 From: xianshenglu Date: Sun, 12 Nov 2023 00:23:15 +0800 Subject: [PATCH] fix: change async clipboard api with execCommand --- core/clipboard.js | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/core/clipboard.js b/core/clipboard.js index 5f67bd34..da2c4657 100644 --- a/core/clipboard.js +++ b/core/clipboard.js @@ -20,9 +20,19 @@ export default class Clipboard { _handleCopy(e) { this._remoteClipboard = e.clipboardData.getData('text/plain'); - if (navigator.clipboard.writeText) { - navigator.clipboard.writeText(this._remoteClipboard).catch(() => {/* Do nothing */}); - } + this._copy(this._remoteClipboard) + } + /** + * Has a better browser support compared with navigator.clipboard.writeText. + * Also, no permission required. + */ + _copy(text) { + const textarea = document.createElement('textarea'); + textarea.innerHTML = text; + document.body.appendChild(textarea); + textarea.select(); + const result = document.execCommand('copy'); + document.body.removeChild(textarea); } /** * @param {ClipboardEvent} e