如何在 chrome 扩展程序中永久授予 navigator.clipboard 权限?
How to permanently grant permission for navigator.clipboard in chrome extension?
我正在尝试在我的 Google Chrome 扩展程序打开的选项卡中使用 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>
有没有办法阻止这条消息每次都出现?
这根本不可能。 Google chrome 显示这样的警告,以便用户可以授予剪贴板权限或拒绝权限。
您没有指定打开页面的方式。权限对话框表明您正在通过 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);
我正在尝试在我的 Google Chrome 扩展程序打开的选项卡中使用 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>
有没有办法阻止这条消息每次都出现?
这根本不可能。 Google chrome 显示这样的警告,以便用户可以授予剪贴板权限或拒绝权限。
您没有指定打开页面的方式。权限对话框表明您正在通过 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);