Как я могу использовать navigator.clipboard.readText () в расширении Chrome? - PullRequest
0 голосов
/ 27 января 2019

Я написал расширение Firefox, которое читает буфер обмена, и если у него есть какой-либо сертификат PEM, он напечатает его детали на новой вкладке.Я пытаюсь портировать на Chrome.Это не работает.Что я делаю не так?

Я запросил clipboardRead в manifest.json и запустил его в фоновом скрипте, и он отлично работает в Firefox.

 navigator.clipboard.readText().then(function (textFromClipboard) {
   //do stuff with textFromClipboard
 });

В Chrome с ошибкой "Не удалось выполнить readText в буфере обмена: незаконный вызов ".Что я делаю неправильно?Как я могу сделать эту работу в Chrome также?Большинство ответов включают создание ввода, получение фокуса, выполнение вставки.Это действительно сложно, надеюсь, мне не нужно этого делать.Это действительно хорошо работает в Firefox, почему это сложно в Chrome?

1 Ответ

0 голосов
/ 02 августа 2019

Вы можете использовать @bumble/clipboard.Это библиотека npm для расширений Chrome, эмулирующая API буфера обмена.

Не требует взаимодействия с пользователем и работает в фоновом скрипте.Требуются только разрешения clipboardRead или clipboardWrite.

import { clipboard } from '@bumble/clipboard'

// Read text from the clipboard, or "paste"
clipboard.readText()
  .then((text) => {
    console.log('clipboard contents', text)
  })

// Write text to the clipboard, or "copy"
clipboard.writeText('write this to the clipboard')
  .then((text) => {
    console.log(text, 'was written to the clipboard')
  })

Раскрытие информации: я написал эту библиотеку для себя, чтобы решить те же проблемы, что и @ddreian.

...