首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在chrome扩展中永久授予navigator.clipboard权限?

如何在chrome扩展中永久授予navigator.clipboard权限?
EN

Stack Overflow用户
提问于 2022-05-25 14:26:45
回答 2查看 1.2K关注 0票数 1

我正试图在Google扩展打开的选项卡中使用navigator.clipboard.readText()。当我这样做时,即使我已经授予了权限,下面的权限警报仍然会出现在每个页面加载中:

以下是有关守则:

代码语言:javascript
复制
<button onclick="getClipboardContents()">Add</button>

<script>
  async function getClipboardContents() {
    try {
      const text = await navigator.clipboard.readText();
      console.log('Pasted content: ', text);
    } catch (err) {
      console.error('Failed to read clipboard contents: ', err);
    }
  }
</script>

有没有办法阻止这条消息每次出现?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-31 13:39:19

您没有指定打开页面的方式。权限对话框表示您正在通过file:// URL访问它。由扩展名打开的选项卡应该有一个chrome-extension:// URL,权限对话框应该显示您的扩展名:

您需要将clipboardRead权限添加到您的manifest.json中,并使用chrome.tabs.create()chrome.runtime.getURL()打开选项卡。当以这种方式完成时,权限对话框应该只出现在第一个页面加载上,而不是每次都出现。

下面是一个最小的可重现性示例:

manifest.json

代码语言:javascript
复制
{
  "manifest_version": 3,
  "name": "Clipboard Test",
  "version": "0.1",
  "permissions": [
    "clipboardRead"
  ],
  "action": {},
  "background": {
    "service_worker": "background.js"
  }
}

background.js

代码语言:javascript
复制
chrome.action.onClicked.addListener(currentTab => {
  chrome.tabs.create({
    'url': chrome.runtime.getURL("test.html")
  });
});

test.html

代码语言:javascript
复制
<!DOCTYPE html>
<title> Clipboard Test </title>
<button id="test"> TEST </button>
<script src="clip.js"></script>

clip.js

代码语言:javascript
复制
const button = document.querySelector('button#test');

async function paste() {
  let text = await navigator.clipboard.readText();
  alert(text);
}

button.addEventListener('click', paste);
票数 2
EN

Stack Overflow用户

发布于 2022-05-31 05:26:17

这根本是不可能的。Google会显示这样的警报,这样用户就可以授予剪贴板特权或拒绝这些特权。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72379474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档