javascript - extensie Google Chrome :: console.log() din pagina de fundal?
Dacă apelez console.log('ceva'); din pagina popup, sau din orice script inclus de acolo, funcționează bine.
Totuși, deoarece pagina de fundal nu este rulată direct de pe pagina pop-up, aceasta nu este inclusă în consolă.
Există o modalitate prin care pot să fac ca console.log()-urile din pagina de fundal să apară în consola pentru pagina popup?
Există vreo modalitate de a apela o funcție din pagina popup din pagina de fundal?
Răspuns #1
Poți deschide consola paginii de fundal dacă dai clic pe linkul „background.html” din lista de extensii.
Pentru a accesa pagina de fundal care corespunde extensiilor tale, deschide Setări/Extensii sau deschide un nou tab și introdu chrome://extensions. Vei vedea ceva asemănător cu această captură de ecran.
Sub extensia ta, dă clic pe linkul pagina de fundal. Aceasta deschide o fereastră nouă. Pentru exemplul de meniu de context, fereastra are titlul: _generated_background_page.html.
Răspunsul #2
Orice pagină de extensie (cu excepția scripturilor de conținut) are acces direct la pagina de fundal prin chrome.extension.getBackgroundPage().
Asta înseamnă că, în cadrul paginii popup, poți pur și simplu să faci:
chrome.extension.getBackgroundPage().console.log('foo');
Pentru a îl face mai ușor de utilizat:
var bkg = chrome.extension.getBackgroundPage();
bkg.console.log('foo');
Acum, dacă vrei să faci același lucru în scripturile de conținut, trebuie să folosești Transmiterea de Mesaje pentru a realiza acest lucru. Motivul este că ambele aparțin unor domenii diferite, ceea ce are sens. Există multe exemple pe pagina Transmiterii de Mesaje pe care le poți verifica.
Sper că asta clarifică totul.
Răspunsul #3
Pentru a răspunde direct la întrebarea ta, atunci când apelezi console.log("something") din background, acest mesaj este înregistrat în consola paginii de background. Pentru a-l vizualiza, poți accesa chrome://extensions/ și să dai clic pe inspect view sub extensia ta.
Când dai clic pe popup, acesta este încărcat în pagina curentă, astfel încât console.log ar trebui să afișeze mesajul de log în pagina curentă.
Răspuns #4
Încă poți folosi console.log(), dar acesta este înregistrat într-o consolă separată. Pentru a-l vizualiza - fă clic dreapta pe pictograma extensiei și selectează „Inspect popup”.
Răspunsul #5
Cea mai simplă soluție ar fi să adaugi următorul cod în partea de sus a fișierului. Și atunci poți folosi toată API-ul complet al consolei Chrome așa cum ai face în mod normal.
console = chrome.extension.getBackgroundPage().console;
// for instance, console.assert(1!=1) will return assertion error
// console.log("msg") ==> prints msg
// etc
Răspunsul #6
const log = chrome.extension.getBackgroundPage().console.log;
log('something')
Deschide jurnalul:
- Deschide: chrome://extensions/
- Detalii > Pagina de fundal
Răspunsul #7
Actualizare pentru 2022: cu Manifest 3 și service worker, trebuie doar să mergi la chrome://extensions, să dai click pe butonul detalii al extensiei tale, să găsești: Inspect Views -> Service Worker.
Răspunsul #8
Încearcă asta, dacă vrei să înregistrezi în consola paginii active:
chrome.tabs.executeScript({
code: 'console.log("addd")'
});
