Расширение Google Chrome - всплывающее окно не отображается и не может проверить фоновую страницу - PullRequest
0 голосов
/ 17 июня 2020

Я разрабатываю Chrome Расширение, которое извлекает идентификатор электронной таблицы из активной вкладки и управляет таблицами Google через gAPI. Я не могу определить конкретные c обстоятельства, при которых появляется эта ошибка. После некоторых успешных применений расширения всплывающее окно просто не может быть открыто снова, но фон значка расширения становится серым.

Единственный способ обойти эту проблему - перезагрузить расширение в режиме разработчика . В той же версии, загруженной для тестирования в Chrome Интернет-магазин, удаление и повторное добавление расширения ничего не исправляет. Сборщик ошибок, кажется, не обнаруживает ошибок, но при нажатии Inspect views background.html в строке заголовка окна проверки появляется этот странный URI из второго снимка экрана вместо DevTools - chrome-extension://<id>/background.html. После перезагрузки DevTools - chrome-extension://<id>/background.html снова появляется в строке заголовка.

Пытался решить эту проблему, переключаясь между page_action и browser_action в файле манифеста (с соответствующими изменениями в background.ts). Без эффекта.

background.ts

import {BackgroundServiceFoo} from "../BackgroundServiceFoo";
import {BackgroundServiceBar} from "../BackgroundServiceBar";

(window as any).backgroundServiceFoo = new BackgroundServiceFoo();
(window as any).backgroundServiceBar = new BackgroundServiceBar();

function tokenRefresh() {
  (window as any).backgroundServiceFoo.tokenRefresh()
    .catch(console.error);
}

chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
  chrome.declarativeContent.onPageChanged.addRules([{
    conditions: [new chrome.declarativeContent.PageStateMatcher({
      pageUrl: {urlContains: 'docs.google.com/spreadsheets'},
    })
    ],
    actions: [new chrome.declarativeContent.ShowPageAction()]
  }]);
});

chrome.alarms.onAlarm.addListener(tokenRefresh);
chrome.alarms.create("tokenRefresh", {periodInMinutes: 30});
tokenRefresh();

index.ts использует службу из фонового скрипта, например:

chrome.runtime.getBackgroundPage(backgroundPage => {
  ((backgroundPage as any).backgroundServiceBar as BackgroundServiceBar).doStuff();
});

chrome://extensions Non-functional inspection

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