Dobrze się bawię z rozszerzeniem Google Chrome i chcę tylko wiedzieć, jak mogę zapisać adres URL bieżącej karty w zmiennej?
Dobrze się bawię z rozszerzeniem Google Chrome i chcę tylko wiedzieć, jak mogę zapisać adres URL bieżącej karty w zmiennej?
Użyj w chrome.tabs.query()
ten sposób:
chrome.tabs.query({active: true, lastFocusedWindow: true}, tabs => {
let url = tabs[0].url;
// use `url` here inside the callback because it's asynchronous!
});
Wymaga to żądania dostępu do chrome.tabs
interfejsu API w manifeście rozszerzenia :
"permissions": [ ...
"tabs"
]
Należy pamiętać, że definicja „bieżącej karty” może się różnić w zależności od potrzeb rozszerzenia.
Ustawienie lastFocusedWindow: true
w zapytaniu jest odpowiednie, gdy chcesz uzyskać dostęp do bieżącej karty w oknie użytkownika (zazwyczaj najwyższym oknie).
Ustawienie currentWindow: true
pozwala uzyskać bieżącą kartę w oknie, w którym aktualnie działa kod twojego rozszerzenia. Na przykład może to być przydatne, jeśli twoje rozszerzenie tworzy nowe okno / wyskakujące okienko (zmieniając fokus), ale nadal chce uzyskać dostęp do informacji o karcie z okna, w którym rozszerzenie zostało uruchomione.
Wybrałem użycie lastFocusedWindow: true
w tym przykładzie, ponieważ Google przywołuje przypadki, w których currentWindow
nie zawsze mogą być obecne .
Możesz dodatkowo zawęzić zapytanie dotyczące karty, korzystając z dowolnej zdefiniowanej tutaj właściwości: chrome.tabs.query
Ostrzeżenie!
chrome.tabs.getSelected
jest przestarzałe . Użyj,chrome.tabs.query
jak pokazano w innych odpowiedziach.Najpierw musisz ustawić uprawnienia do interfejsu API w pliku manifest.json:
I do przechowywania adresu URL:
źródło
chrome.tabs.getSelected
jest niezdefiniowane, czy mógłbym zadać to w osobnym pytaniu?chrome.tabs.getSelected
Metoda została zaniechana, prawidłowa metoda jest notowana na ten temat poniżej odpowiedź .Inne odpowiedzi zakładają, że chcesz to wiedzieć ze skryptu wyskakującego lub tła.
Jeśli chcesz znać bieżący adres URL ze skryptu treści , zastosowanie ma standardowy sposób JS:
Możesz użyć właściwości,
window.location
aby uzyskać dostęp do poszczególnych części adresu URL, takich jak host, protokół lub ścieżka.źródło
window.location.host
tylko zobaczyć, czy jestem na „stackoverflow.com”, czy nie.match:"<all_urls>"
sytuacji w sekcji content_script, a Chrome nie poleca <all_urls>.contentScript.js
a nie wbackground.js
. Po prostu przekaż wszystkie dane, które przefiltrowałeś z adresu URL, do wiadomościbackground.js
. Przykład:let message = { type: "fetchVideoDate", id: getVideoId() };
gdziegetVideoId()
zawiera wykonaniewindow.location.toString()
. W przeciwnym razie otrzymasz trochęchrome://temp_background_file.html
danych. Zauważ też, że czasamimessage
się nazywarequest
.Problem polega na tym, że chrome.tabs.getSelected jest asynchroniczny. Poniższy kod zazwyczaj nie będzie działał zgodnie z oczekiwaniami. Wartość „tablink” będzie nadal niezdefiniowana, gdy zostanie zapisana w konsoli, ponieważ getSelected nie wywołał jeszcze wywołania zwrotnego, które resetuje wartość:
Rozwiązaniem jest zawinięcie kodu, w którym będzie używana wartość w funkcji, i wywołanie jej przez getSelected. W ten sposób masz gwarancję, że zawsze ustawisz wartość, ponieważ Twój kod będzie musiał czekać na podanie wartości przed jej wykonaniem.
Wypróbuj coś takiego:
źródło
Cześć, oto próbka Google Chrome, która wysyła wiadomość e-mail do aktualnej witryny do znajomego. Podstawową ideą jest to, czego chcesz ... przede wszystkim pobiera zawartość strony (nie jest dla ciebie interesująca) ... następnie otrzymuje adres URL (<- dobra część)
Dodatkowo jest to dobry przykład działającego kodu, który wolę bardziej niż czytanie Dokumentów.
Można znaleźć tutaj: Wyślij tę stronę pocztą e-mail
źródło
To rozwiązanie jest już TESTOWANE.
ustaw uprawnienia dla interfejsu API w pliku manifest.json
Przy pierwszym wywołaniu funkcji wywołania. https://developer.chrome.com/extensions/tabs#event-onActivated
Przy zmianie funkcji połączenia. https://developer.chrome.com/extensions/tabs#event-onSelectionChanged
funkcja uzyskania adresu URL
źródło
W przypadku osób korzystających z
context menu api
dokumentów dokumenty nie są od razu jasne, jak uzyskać informacje o karcie.https://developer.chrome.com/extensions/contextMenus
źródło
Trzeba sprawdzić to .
HTML
manifest.json
JavaScript
Poniższy kod zapisze wszystkie adresy URL aktywnego okna w obiekcie JSON w ramach kliknięcia przycisku.
źródło