Не удается успешно вызвать captureVisibleTab (), несмотря на запрос разрешений

#permissions #screenshot

#разрешения #снимок экрана

Вопрос:

Я работаю над расширением браузера для React DOM. Это расширение имеет пользовательский интерфейс «Профилировщик», который измеряет производительность рендеринга для компонентов React. Недавно я добавил снимки экрана в этот профилировщик, чтобы он мог показывать изображения DOM каждый раз, когда React обновляет его.

Для этого расширение вызывает chrome.tabs.captureVisibleTab в ответ на запрос из пользовательского интерфейса расширения DevTools. (Этот запрос выполняется каждый раз, когда React фиксирует изменения в DOM.)

На данный момент мне потребовалось <all_urls> разрешение, основанное на документации для этого API, в которой говорится:

У вас должно быть <all_urls> разрешение на использование этого метода. (С другой стороны, Chrome разрешает использование этого метода с activeTab разрешения и соответствующим жестом пользователя).

документации Chrome для этого API не упоминается ни один из способов.)

По моему опыту, я могу захватывать экран после обновлений, вызванных, например, щелчком по элементу привязки. Однако другие типы обновлений (например, события «прокрутки», программный вызов click() элемента) завершаются сбоем со следующей ошибкой, регистрируемой в фоновом сценарии:

Непроверенная среда выполнения.Последняя ошибка: не удается получить доступ к содержимому URL «». Манифест расширения должен запрашивать разрешение на доступ к этому хосту.

Является ли документация неверной в отношении этого API? Я неправильно определил свои разрешения? Буду признателен за любую помощь!

Комментарии:

1. Я немного смущен тем, что это работает для событий «click», учитывая, что это не работает, например, для событий «scroll». (Поскольку postMessage промежуточные вызовы являются асинхронными, я бы не ожидал, что браузер свяжет снимок экрана с предыдущим событием click …)

2. Похоже, это как-то связано с фокусом. Если я нажму, затем прокрутю окно, я смогу сделать скриншоты страницы. Если я прокручиваю, например, с помощью трековой панели, сосредоточившись на панели DevTools, я не могу их захватить.