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

以下是有关守则:
<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>有没有办法阻止这条消息每次出现?
发布于 2022-05-31 13:39:19
您没有指定打开页面的方式。权限对话框表示您正在通过file:// URL访问它。由扩展名打开的选项卡应该有一个chrome-extension:// URL,权限对话框应该显示您的扩展名:

您需要将clipboardRead权限添加到您的manifest.json中,并使用chrome.tabs.create()和chrome.runtime.getURL()打开选项卡。当以这种方式完成时,权限对话框应该只出现在第一个页面加载上,而不是每次都出现。
下面是一个最小的可重现性示例:
manifest.json
{
"manifest_version": 3,
"name": "Clipboard Test",
"version": "0.1",
"permissions": [
"clipboardRead"
],
"action": {},
"background": {
"service_worker": "background.js"
}
}background.js
chrome.action.onClicked.addListener(currentTab => {
chrome.tabs.create({
'url': chrome.runtime.getURL("test.html")
});
});test.html
<!DOCTYPE html>
<title> Clipboard Test </title>
<button id="test"> TEST </button>
<script src="clip.js"></script>clip.js
const button = document.querySelector('button#test');
async function paste() {
let text = await navigator.clipboard.readText();
alert(text);
}
button.addEventListener('click', paste);发布于 2022-05-31 05:26:17
这根本是不可能的。Google会显示这样的警报,这样用户就可以授予剪贴板特权或拒绝这些特权。
https://stackoverflow.com/questions/72379474
复制相似问题