Не удалось прочитать расширения Chrome из / записи в буфер обмена - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь написать расширение 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"]
}

Заранее спасибо за любые идеи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...