使用 JavaScript 和 Google Chrome API 将剪贴板数据存储到变量中

Storing clipboard data into a variable with JavaScript and the Google Chrome API

本文关键字:存储 数据 变量 剪贴板 JavaScript Google Chrome API 使用      更新时间:2023-09-26

我想知道是否可以将剪贴板的内容存储在字符串变量中。

以下来源指出,使用纯JS无法做到这一点,但是我想希望chrome API能够实现这一目标。(我正在开发一个铬扩展程序)。

  • 如何在跨浏览器中读取剪贴板数据?

有一个clipboardRead权限,它会让你相信这是可能的,但它的描述只是:

如果扩展程序或应用使用 document.execCommand('paste'),则为必需。 源

澄清一下:我没有尝试将数据复制到剪贴板或从中粘贴数据。我想将剪贴板的内容存储到变量中,而不会以任何方式改变剪贴板内容。

为了进一步澄清,我不能假设剪贴板数据恰好在操作时位于info.selectionText中。

如果不可能,我想我将不得不忍受它,但这似乎是可以通过扩展来实现的。


编辑:我想存储值的原因是因为我需要利用剪贴板来执行操作,但我想在完成后恢复其内容,这样用户就不会丢失以前在那里的任何内容。

如果我只是将数据粘贴到文本区域并从那里存储,那么,当我去放回数据时,用户将丢失他们拥有的任何格式,这总比没有好得多,但不是最佳的。

另外,有没有办法存储这些数据,即使它不是字符串(例如图像)?允许我这样做的解决方案无疑也会隐含地回答上述问题,但不是必需的。我主要寻找保存字符串数据,并希望采用一种保持格式的方法。

不久前有一个实验性的剪贴板 api,我想他们删除了它。您始终可以将内容粘贴到文本区域/内容可编辑中并获取其值:

function getClipboard() {    
    var el = document.createElement('textarea');
    document.body.appendChild(el);
    el.focus();
    document.execCommand('paste');
    var value = el.value;
    document.body.removeChild(el)
    return value;
}
console.log(getClipboard());