将文本从 Firefox WebExtension 中的后台脚本复制到剪贴板

Copy text to clipboard from background script in a Firefox WebExtension

我正在将我的 Chrome 扩展移植到 Firefox。它具有粘贴到剪贴板功能。但是,我还没有在 Firefox 中做到这一点。这是我在后台脚本中尝试做的事情:

const input = document.createElement('textarea');
input.style.position = 'fixed';
input.style.opacity = 0;
input.value = text;
document.body.appendChild(input);
input.select();
document.execCommand('copy');
logger(text);
document.body.removeChild(input);

这在 Chrome 中工作正常。我的清单中有 clipboardWrite 权限。有什么提示为什么它不能与 Firefox 一起使用吗?

您正在尝试从后台脚本执行此操作,但该脚本不起作用。 MDN 页面:“Interact with the clipboard" in "Browser-specific considerations”表示,对于 Firefox:

You can write to the clipboard like this in all execution contexts except background pages. In Firefox you can't select text or focus an input field in background pages, so you can't write to the clipboard from a background page.

您需要在其他一些上下文中才能写入剪贴板。例如,您可以注入一个内容脚本,或者打开一个选项卡或 window 到您的扩展中的一个页面。您选择如何执行此操作将取决于您对扩展程序已经拥有的额外权限(例如 tabs)、当前打开的选项卡(是否有任何打开的选项卡可以在其中注入脚本)以及视觉效果您可以接受影响(例如,短暂打开您未激活的选项卡,用户可能会或可能不会察觉)。