chrome.tabs.executeScript(null, { file: "jquery.js" }, function() {
chrome.tabs.update(null, {url: "https://example.com/"});
});
powyższy kod działa, gdy uruchamiam, gdy mój pasek adresu ma coś, co oznacza, że jestem na każdej stronie internetowej, ale kiedy uruchamiam, gdy mój pasek adresu jest pusty, dostaję poniżej błędu:
Unchecked runtime.lastError while running tabs.executeScript: Cannot access a chrome:// URL
at Object.callback
Odpowiedzi:
1 dla odpowiedzi № 1Zwykle (patrz także Programowe wtryskiwanie w dokumentach) nie można wstrzykiwać skryptów do zakładek
chrome://
adresy URL, ponieważ dozwolone schematy są<scheme> := "*" | "http" | "https" | "file" | "ftp"
.W Chrome przed wersją v61 nadal było możliwe wstrzyknięcie do ramki zawartości strony Nowa karta, gdzie "pusty pasek adresu", o którym wspomniałeś, jest reprezentowany wewnętrznie jako
chrome://newtab/
. Na przykład główna ramka ma taki adres: https://www.google.com/_/chrome/newtab?espv=2&es_th=1&ie=utf-8 (użyj panelu Sieć w devtools, aby sprawdzić adresy URL). Więc twójmanifest.json
miałby"permissions": ["tabs", "https://www.google.com/_/chrome/newtab*"],
Alternatywnie możesz włączyć
chrome://flags/#extensions-on-chrome-urls
flaga, jednak nie jest to przydatne, ponieważ Chrome wyświetli ostrzeżenie przy każdym uruchomieniu.