Не указан исходный код или файл. при попытке внедрить CSS с расширением chrome

#javascript #google-chrome #google-chrome-extension #browser #chromium

#javascript #google-chrome #google-chrome-extension #браузер #chromium

Вопрос:

Итак, это мое первое расширение Chrome, и оно несколько раз идеально вводит мой CSS на страницу, но в случайное время происходит сбой и отказывается делать это снова. Я понятия не имею, как это происходит

Это мой JS, работающий в фоновом режиме

   var style = {};
  style["file"] = "smaller.css";
  style["runAt"] = "document_start";



chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
  if (!tab.url.startsWith("http")) return;
  let url = extractDomain(tab.url);
  chrome.storage.local.get([url, "extension_enabled"], r => {
    if (r[url] == null) return;
    if (r[url] amp;amp; r["extension_enabled"])
      chrome.tabs.insertCSS(tabId, style, _ => {
        let e = chrome.runtime.lastError;
        if (e !== undefined) {
          console.log(tabId, _, e);
          console.log(e.getMessage);
        }
      });
  })
});
 

Я проверяю URL-адрес в хранилище, потому что я хочу вводить CSS только на страницы определенного сервиса, который распространяется по нескольким доменам.

r[url] и r[«extension_enabled»] являются логическими значениями, если они установлены.

Это ошибка:

{ «сообщение»: «Исходный код или файл не указаны». }

Я пробовал это расширение в нескольких браузерах (Google Chrome, Chromium, Opera GX) и на нескольких компьютерах. Ошибка возникает в каждом браузере и на каждом компьютере, но не одновременно, все они происходят в случайное время, может составлять 2 клика или 2 дня

Может быть, кто-нибудь может помочь мне решить эту проблему

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

1. Похоже на ошибку в браузере или, возможно, URL-адрес вкладки запрещен — откройте chrome://policy и посмотрите, есть ли он в runtime_blocked_hosts .

Ответ №1:

Я изменил свой код на это:

 chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
  if (!tab.url.startsWith("http")) return;
  let url = extractDomain(tab.url);
  chrome.storage.local.get([url, "extension_enabled"], r => {
    if (r[url] == null) return;
    if (r[url] amp;amp; r["extension_enabled"]){
      let style = {};
      style["file"] = "smaller.css";
      style["runAt"] = "document_start";
      chrome.tabs.insertCSS(tabId, style, _ => {
        let e = chrome.runtime.lastError;
        if (e !== undefined) {
          console.log(tabId, _, e);
          console.log(e.getMessage);
        }
        }
      });
  })
});
 

и определил стиль локально, а не глобально