如何将内容复制到Manifest_Version 3 Chrome扩展中的剪贴板? [英] How to copy contents to clipboard in a Manifest_version 3 Chrome Extension?

查看:24
本文介绍了如何将内容复制到Manifest_Version 3 Chrome扩展中的剪贴板?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

作为引用here要读取Chrome扩展中的剪贴板文本,您必须:

  • 请求清单中的剪贴板读取权限
  • 创建后台脚本,因为只有后台脚本可以访问剪贴板
  • 在背景页中创建一个元素以接受剪贴板粘贴操作。如果您将其设置为文本区域,您将获得纯文本;如果您将其设置为带有Content Edable=True的div,您将获得格式化的HTML
  • 如果要将剪贴板数据传回页面内脚本,则需要使用消息传递API

但这仅适用于MANIFEST_VERSION 2,因为在MANIFEST_VERSION 3中,您不能有后台脚本,而只能有服务工作进程。

在这个服务人员中,您不能有正常的功能,所以我有一个

chrome.runtime.onMessage.addListener

在这个&Quot;MANIFEST_VERSION 3服务工作器Backack.js脚本中,我从我的popup.html中调用了一条消息。

但是,问题是该服务工作人员没有";文档";,因此我无法创建文本区域来执行复制内容并调用Docent.execCommand的操作。

所以...是否有办法将内容复制到清单版本3中的剪贴板?

推荐答案

以下是一个非常简陋(但有效)的解决方案:

  1. 在您的后台脚本中,设置某种侦听器以触发复制功能。
  2. 设置注入脚本/函数,该脚本/函数用要复制的所需文本创建不可见的文本区。在同一脚本/函数中,添加复制到剪贴板作为解决方案here
  3. 在您的后台.js脚本中,设置代码以检索当前活动的选项卡(如@wOxxOm所建议的)并使用选项卡IDto dynamically execute your injection script/function

由于您的插入脚本(也称为内容脚本)可以访问文档(这次该文档是打开的网页的文档),因此您可以创建一个不可见的文本区,将该文本区设置为包含要复制的文本,然后使用Document.execCommand(&Quot;Copy&Quot;);将文本复制到剪贴板上。

Here是一个我的后台.js脚本示例,当您按Ctrl+Shift+K时,它会将文本复制到剪贴板上。

这篇关于如何将内容复制到Manifest_Version 3 Chrome扩展中的剪贴板?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆