当浏览器未聚焦时从网站复制到剪贴板

Dar*_*nov 7 javascript google-chrome-extension tampermonkey

我想为网站创建一个非常小的扩展,它会自动将一些值复制到剪贴板。

问题是我希望它复制该值,即使浏览器没有聚焦,例如:

  1. 我打开网站,我的扩展程序监听页面上的变化
  2. 我打开不同的应用程序
  3. 如果页面上发生某些变化,则扩展程序应该复制一些值
  4. 我正在使用的主要应用程序仍然是焦点,但我可以 CTRL+V 粘贴从网站复制的值,无需 alt+tab

我尝试使用剪贴板 API:

navigator.clipboard.writeText(...)
Run Code Online (Sandbox Code Playgroud)

但我认为它不会起作用,因为浏览器必须集中注意力(我认为)。

当页面聚焦时,复制工作正常。如果我尝试切换到不同的应用程序,当我的扩展尝试复制该值时,我会收到异常:

DOMException: Document is not focused.
Run Code Online (Sandbox Code Playgroud)

有什么办法可以做到这一点吗?

Mat*_*ich 5

出于安全原因这是不可能的。很难想象有人想要这种行为......

该文档有很多很好的信息..

在 Chrome 中,您可以clipboard-write在用户生成的小事件之外请求写入剪贴板的权限,尽管 Chrome 似乎不会限制您何时可以写入剪贴板。根据下面的文章,您可以写入剪贴板在 Chrome 中从后台等等。请参阅本节底部的注释以获取更多信息。

如果 Chrome 允许您从后台写入剪贴板或者未选择窗口,则您可以使用页面可见性 API在“该”特定窗口不可见时启动复制事件。

您甚至可以使用window.addEventListener('blur', function(){...})处理程序来测试等......

总而言之,这在 Chrome 中可能是可能的,但在 Firefox 中绝对不支持。

您可以在此处查看浏览器之间的差异以及它们如何处理剪贴板相关事件/权限/等