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

标签 javascript firefox firefox-addon firefox-addon-webextensions

我正在将我的 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 中运行良好。我的 list 中有 clipboardWrite 权限。有什么提示为什么它不能与 Firefox 一起使用吗?

最佳答案

您正在尝试从后台脚本执行此操作,但该脚本不起作用。 MDN 页面:“Interact with the clipboard”中的“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.

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

关于javascript - 将文本从 Firefox WebExtension 中的后台脚本复制到剪贴板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45622608/

相关文章:

javascript - 奇怪的 JavaScript 排序错误

javascript - 为什么 JavaScript 会随机将 '/1' 添加到 URL 栏末尾?

css - Chrome->Web Developer ->Styles对应的Firefox工具是哪个?

javascript - d3插值示例说明

javascript - Jquery - 检查页面是否存在

javascript - 此 JQuery 片段在 Firefox 中不起作用

javascript - Firefox 扩展中的 Html 弹出 iframe

javascript - FireFox 中是否有允许父文档访问另一个域上 IFRAME 的 DOM 的设置?

javascript - 将文件路径从 jsp 发送到 Java

javascript - Jquery:如何防止多次运行?