Как запросить у пользователя разрешение на чтение из буфера обмена во всплывающем окне расширения 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");
Надеюсь это поможет.