Как запросить у пользователя разрешение на чтение из буфера обмена во всплывающем окне расширения Chrome?

Я создаю свое первое расширение Google Chrome и хочу создать что-то, что можно читать и записывать в системный буфер обмена. В настоящее время я помещаю все js в скрипт, импортированный popup.html для расширения.

У меня также есть разрешения, заявленные в manifest.json за clipboard-read а также clipboard-write,

Мне удалось записать данные в буфер обмена, но я не могу читать из него.

у меня есть button на popup.html это имеет id и в js я получаю элемент по идентификатору и добавляю eventlistener для click, который запускает функцию с именем paste, которая в свою очередь вызывает navigator.clipboard.readText(), Насколько я понимаю, это должно запрашивать разрешение, но оно ничего не делает.

Вы знаете, нормально ли вызывать readText от popup.html? Если так, то как бы получить приглашение появиться? Заранее спасибо!

1 ответ

Если вы включите JQuery в качестве фонового скрипта, вы можете использовать это (я использую это все время в моих расширениях Chrome), чтобы переместить текст в буфер обмена, а затем, если у вас есть прошлый метод, вы можете сделать это в settimeout...

function copyUsingJquery(element_id) {
            $(element_id).attr("contenteditable", true)
              .select()
              .on("focus", function () {
                  document.execCommand('selectAll', false, null)
              })
              .focus();
            document.execCommand("Copy");
            $(element_id).removeAttr("contenteditable");

            setTimeout(function () {
                //deslect text on page after a few seconds
                //$(element_id).trigger("blur");
                window.getSelection().removeAllRanges();
            }, 5000);

        }

и затем вызовите вышеупомянутую функцию со следующим, где some_html - ваш элемент (может быть div/ должен быть видимым или позиционированным, чтобы не быть видимым...

copyUsingJquery("#some_html");

Надеюсь это поможет.

Другие вопросы по тегам