#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);
}
}
});
})
});
и определил стиль локально, а не глобально