Jeśli zadzwonię console.log('something');
z wyskakującej strony lub dowolnego skryptu, to działa dobrze.
Jednak ponieważ strona w tle nie jest bezpośrednio wyprowadzana ze strony wyskakującej, nie jest uwzględniona w konsoli.
Czy istnieje sposób, w jaki mogę uzyskać console.log()
wyświetlenie na stronie w tle w konsoli strony podręcznej?
czy istnieje sposób na wywołanie funkcji ze strony w tle na stronie podręcznej?
Odpowiedzi:
Każda strona rozszerzenia (z wyjątkiem skryptów zawartości ) ma bezpośredni dostęp do strony w tle za pośrednictwem
chrome.extension.getBackgroundPage()
.Oznacza to, że na wyskakującej stronie możesz po prostu:
Aby ułatwić korzystanie z:
Teraz, jeśli chcesz zrobić to samo w skryptach zawartości , musisz użyć Message Passing, aby to osiągnąć. Powód, że obaj należą do różnych dziedzin, co ma sens. Na stronie Przekazywanie wiadomości znajduje się wiele przykładów, które możesz sprawdzić.
Mam nadzieję, że to wszystko wyjaśnia.
źródło
alert()
chrome.extension.getBackgroundPage()
dostanęnull
. Czy muszę mieć ustawione uprawnienia lub inną konfigurację?Konsolę strony działającej w tle można otworzyć, klikając łącze „background.html” na liście rozszerzeń.
Aby uzyskać dostęp do strony w tle, która odpowiada Twoim rozszerzeniom, otwórz
Settings / Extensions
lub otwórz nową kartę i wprowadźchrome://extensions
. Zobaczysz coś takiego jak ten zrzut ekranu.Pod rozszerzeniem kliknij link
background page
. To otwiera nowe okno. Dla próbki menu kontekstowego okno ma tytuł:_generated_background_page.html
.źródło
Aby odpowiedzieć bezpośrednio na twoje pytanie, gdy dzwonisz
console.log("something")
z tła, ta wiadomość jest rejestrowana w konsoli strony w tle. Aby go zobaczyć, możesz przejść dochrome://extensions/
i kliknąć toinspect view
pod swoim rozszerzeniem.Po kliknięciu wyskakującego okienka jest ono ładowane na bieżącą stronę, dlatego console.log powinien wyświetlać komunikat dziennika na bieżącej stronie.
źródło
Nadal możesz używać console.log (), ale zostanie ona zalogowana w osobnej konsoli. Aby go zobaczyć - kliknij prawym przyciskiem myszy ikonę rozszerzenia i wybierz „Sprawdź wyskakujące okienko”.
źródło
Najprostszym rozwiązaniem byłoby dodanie następującego kodu na początku pliku. Poza tym możesz normalnie korzystać z pełnego interfejsu konsoli Chrome .
źródło
Otwórz dziennik:
źródło
Spróbuj tego, jeśli chcesz zalogować się do konsoli aktywnej strony:
źródło
W odniesieniu do pierwotnego pytania chciałbym dodać do zaakceptowanej odpowiedzi Mohameda Mansoura, że istnieje również sposób na odwrócenie tego działania:
Możesz uzyskać dostęp do innych stron rozszerzeń (tj. Strony opcji, strony wyskakującej) z poziomu strony / skryptu w tle z
chrome.extension.getViews()
wywołaniem. Jak opisano tutaj .źródło
To stary post, z już dobrymi odpowiedziami, ale dodaję dwa bity. Nie lubię używać console.log, wolę raczej loggera, który loguje się do konsoli, lub gdziekolwiek chcę, więc mam moduł definiujący funkcję dziennika trochę taką jak ta
Kiedy wywołuję dziennik („to jest mój dziennik”), zapisze wiadomość zarówno w wyskakującej konsoli, jak i w tle.
Zaletą jest możliwość zmiany zachowania dzienników bez konieczności zmiany kodu (np. Wyłączanie dzienników na potrzeby produkcji itp.)
źródło
Aby uzyskać dziennik konsoli ze strony działającej w tle, musisz napisać następujący fragment kodu na swojej stronie tła background.js -
Następnie załaduj rozszerzenie i sprawdź jego stronę w tle, aby wyświetlić dziennik konsoli.
Śmiało!!
źródło