在javascript中从剪贴板抓取部分数据

car*_*ass 4 javascript clipboard performance

我复制了一个大约一百万行的 Excel 表格。当我查看系统上的剪贴板时,它似乎包含大约 250MB 的数据。但是,我需要从中获取样式信息,例如:

在此输入图像描述

整个数据的大小(远)不到 1MB。有没有办法像读取文件或流一样读取剪贴板,以便我可以执行以下操作:

clipboard.read(1024)
Run Code Online (Sandbox Code Playgroud)

否则,如果我做直线:

evt.clipboardData.getData('text/html')
Run Code Online (Sandbox Code Playgroud)

并在拿到数据抓取我想要的那一段数据,我花了10多秒的时间才完成!然而我相信如果我能够以部分方式读取剪贴板数据(就像它是一个文件一样),该事件应该只需要 0.1 秒左右。

我在这里能做什么?可以FileReader在剪贴板上使用吗?如果是这样,那该怎么办呢?

use*_*170 5

Clipboard.read注释中引用的 API 可以将剪贴板内容作为对象列表返回,ClipboardItem然后您可以从中获取Blob对象,然后可以.slice执行部分​​读取。

\n
const perm = await navigator.permissions.query({ name: \'clipboard-read\' });\nswitch (perm.state) {\ncase \'granted\':\ncase \'prompt\':\n    break;\ndefault:\n    throw new Error("clipboard-read permission not granted");\n}\n\nconst items = await navigator.clipboard.read();\nfor (const item of items) {\n    const blob = await item.getType(\'text/html\');\n    const first1M = await blob.slice(0, 1048576).arrayBuffer();\n    \n    /* process first1M */\n}\n
Run Code Online (Sandbox Code Playgroud)\n

然而,剪贴板 API 到目前为止还远未普及。Firefox ESR 78.9 没有\xe2\x80\x99 实现它。(我还没有尝试过其他浏览器;也许在 Chrome 中,xe2x80x99 已经可以使用了。)

\n