用户的剪贴板是操作系统和其上使用的应用程序之间的“全部”。当您使用网络浏览器时,您可以突出显示文本或右键单击图像并选择“复制图像”。这让我开始思考开发人员如何检测剪贴板中的内容。
您可以使用navigator.clipboard
API 检索用户剪贴板的内容。此 API 需要用户许可,因为剪贴板可能包含敏感数据。您可以使用以下 JavaScript 获取使用剪贴板 API 的权限:
const result = await navigator.permissions.query({name: "clipboard-write"}); if (result.state === "granted" || result.state === "prompt") { // 剪贴板权限可用 }
授予剪贴板权限后,您可以查询剪贴板以获取ClipboardItem
实例,其中包含已复制内容的详细信息:
const [item] = await navigator.clipboard.read(); // 当文本被复制到剪贴板时.... item.types // ["text/plain"] // 当从网站复制图像时... item.types // ["text/html", "image/png"]
一旦知道内容和 MIME 类型,就可以使用readText()
获取剪贴板中的文本:
const content = await navigator.clipboard.readText();
对于图像,如果您有可用的 MIME 类型和内容,则可以使用带有数据 URI 的<img>
进行显示。准确呈现用户复制的内容时,了解用户剪贴板的内容会很有帮助!
检测剪贴板中的内容类型一文首先出现在David Walsh 博客上。