Я пытаюсь написать расширение Chrome, которое может читать из буфера обмена и может записывать в него, но, похоже, не удается (хотя аналогичная реализация для Firefox работает)
Сначала я спрашиваю разрешение. Для запроса clipboard-read
я получаю состояние prompt
(хотя приглашение chrome не появляется), и чтение не удается. Для запроса clipboard-write
я получаю состояние granted
(без появления приглашения chrome), но при повторной записи происходит сбой. Я не знаю, что я делаю неправильно.
Я все еще разрабатываю его, поэтому загружаю его локально в chrome как распакованное расширение.
вот соответствующий код (background.js):
var g_sWord = "";
chrome.runtime.onInstalled.addListener(function() {
chrome.contextMenus.create({
id: "MyContextMnu",
title: "MyText",
contexts: ["selection"],
});
});
chrome.contextMenus.onClicked.addListener(function(info, tab) {
g_sWord = info.selectionText;
switch (info.menuItemId) {
case "MyContextMnu":
navigator.permissions.query({name: "clipboard-read"}).then(result => {
alert("read: " + result.state);
if (result.state == "granted" || result.state == "prompt") {
navigator.clipboard.readText().then(
clipText => {
alert("Read from clipboard successfully: " + clipText);
}).catch(err => {
alert("Failed to read from clipboard: " + err);
});
}
});
navigator.permissions.query({name: "clipboard-write"}).then(result => {
alert("write: " + result.state);
if (result.state == "granted" || result.state == "prompt") {
navigator.clipboard.writeText("Howdy, partner!").then(function() {
alert("Write to clipboard successfully!");
}, function() {
alert("Failed to write to clipboard");
});
}
});
break;
}
});
и соответствующая часть manifest.json:
"permissions": [
"<all_urls>",
"tabs",
"activeTab",
"contextMenus",
"clipboardRead",
"clipboardWrite"
],
"background": {
"scripts": ["background.js"]
}
Заранее спасибо за любые идеи.