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

Copy to clipboard from website when browser is not focused

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

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

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

我尝试使用剪贴板API:

navigator.clipboard.writeText(...)

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

当页面获得焦点时,复制工作正常。如果我尝试切换到不同的应用程序,当我的扩展试图复制值时我会得到一个异常:

DOMException: Document is not focused.

有什么办法吗?

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

This document has a lot of good info..

在 Chrome 中,您可以请求 clipboard-write 权限以在用户生成的小事件之外写入剪贴板,尽管它似乎没有 Chrome 限制您何时可以写入剪贴板。根据下面的文章,您可以从后台等写入Chrome中的剪贴板。更多信息请参见the note at the bottom of this section

如果 Chrome 确实允许您从后台写入剪贴板,或者如果 window 未被选中,您可以使用 Page Visiblity API 启动复制事件"that" 具体 window 不可见。

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

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

您可以查看浏览器之间的差异以及它们如何处理 clipboard related events/permissions/etc, here..