Plik manifestu – skrypty zawartości

Klucz "content_scripts" określa statycznie ładowany plik JavaScript lub CSS, który ma być używany przy każdym otwarciu strony pasującej do określonego wzorca adresu URL. Rozszerzenia mogą też automatycznie wstawiać skrypty treści. Szczegółowe informacje znajdziesz w sekcji Wstrzykiwanie skryptów.

Plik manifestu

Oto lista obsługiwanych kluczy w usłudze "content_scripts". Wymagany jest tylko klucz "matches" oraz "js" lub "css".

manifest.json

{
 "name": "My extension",
 ...
 "content_scripts": [
   {
     "matches": ["https://*.example.com/*"],
     "css": ["my-styles.css"],
     "js": ["content-script.js"],
     "exclude_matches": ["*://*/*foo*"],
     "include_globs": ["*example.com/???s/*"],
     "exclude_globs": ["*bar*"],     
     "all_frames": false,
     "match_origin_as_fallback": false,
     "match_about_blank": false,
     "run_at": "document_idle",
     "world": "ISOLATED",
   }
 ],
 ...
}

Files

Każdy plik musi zawierać ścieżkę względną do zasobu w katalogu głównym rozszerzenia. Początkowe ukośniki (/) są automatycznie przycinane. Klucz "run_at" określa, kiedy każdy plik ma być wstrzykiwany.

"css" – tablica
Opcjonalny. Tablica ścieżek do plików CSS wstrzykiwana w kolejności tej tablicy przed rozpoczęciem jakiejkolwiek konstrukcji DOM lub renderowania strony.
"js" – tablica,
Opcjonalny. Tablica ścieżek do plików JavaScript wstrzykiwana w kolejności, w jakiej występują w tej tablicy, po wstrzyknięciu plików CSS. Każdy ciąg w tablicy musi być ścieżką względną do zasobu w katalogu głównym rozszerzenia. Początkowe ukośniki („/”) są automatycznie przycinane.

Dopasuj adresy URL

Wymagana jest tylko właściwość "matches". Następnie użyj atrybutów "exclude_matches", "include_globs" i "exclude_globs", aby określić, w których adresach URL ma być wstawiony kod. Klawisz "matches" wywołuje ostrzeżenie.

"matches" – tablica
Wymagane. Określa wzorce adresów URL, do których mają być wstrzykiwane skrypty treści. Informacje o składni znajdziesz w sekcji Wzorce dopasowania.
"exclude_matches" – tablica
Opcjonalny. Wyklucza wzorce adresów URL, w których mają być wstrzykiwane skrypty treści. Informacje o składni znajdziesz w sekcji Wzorce dopasowania.
"include_globs" – tablica
Opcjonalny. Stosowana po dopasowaniach, aby uwzględniać tylko te adresy URL, które również pasują do tego wzorca. Służy do emulacji słowa kluczowego @include Greasemonkey.
"exclude_globs" – tablica
Opcjonalny. Stosowana po dopasowaniach, aby wykluczać adresy URL pasujące do tego wzorca. Ma na celu emulowanie słowa kluczowego @excluded „Greasemonkey”.

Adresy URL obiektów Glob zawierają symbole wieloznaczne * i znaki zapytania. Symbol wieloznaczny * pasuje do dowolnego ciągu o dowolnej długości, w tym do pustego ciągu, a znak zapytania ? odpowiada dowolnemu pojedynczemu znakowi.

Skrypt treści jest wstawiany na stronie, jeśli:

  • Jej adres URL pasuje do dowolnych wzorców "matches" i "include_globs".
  • URL nie pasuje do wzorców "exclude_matches" ani "exclude_globs".

Przykłady dopasowania kulis i adresów URL

"include_globs"

manifest.json

{
  ...
  "content_scripts": [
    {
      "matches": ["https://*.example.com/*"],
      "include_globs": ["https://???.example.com/foo/*"],
      "js": ["content-script.js"]
    }
  ],
  ...
}
Odpowiada
https://www.example.com/foo/bar
https://the.example.com/foo/
Nie pasuje
https://my.example.com/foo/bar
https://example.com/foo/*
https://www.example.com/foo

manifest.json

{
  ...
  "content_scripts": [
    {
      "matches": ["https://*.example.com/*"],
      "include_globs": ["*example.com/???s/*"],
      "js": ["content-script.js"]
    }
  ],
  ...
}
Odpowiada
https://www.example.com/arts/index.html
https://www.example.com/jobs/index.html
Nie pasuje
https://www.example.com/sports/index.html
https://www.example.com/music/index.html

"exclude_globs"

manifest.json

{
  ...
  "content_scripts": [
    {
      "matches": ["https://*.example.com/*"],
      "exclude_globs": ["*science*"],
      "js": ["content-script.js"]
    }
  ],
  ...
}
Odpowiada
https://history.example.com
https://.example.com/music
Nie pasuje
https://science.example.com
https://www.example.com/science

Przykład zaawansowanego dostosowania

manifest.json

{
  ...
  "content_scripts": [
    {
      "matches": ["https://*.example.com/*"],
      "exclude_matches": ["*://*/*business*"],
      "include_globs": ["*example.com/???s/*"],
      "exclude_globs": ["*science*"],
      "js": ["content-script.js"]
    }
  ],
  ...
}
Odpowiada
https://www.example.com/arts/index.html
https://.example.com/jobs/index.html
Nie pasuje
https://science.example.com
https://www.example.com/jobs/business
https://www.example.com/science

Klatki

Klucz "all_frames" określa, czy skrypt treści powinien być wstrzykiwany we wszystkich ramkach spełniających określone wymagania dotyczące adresu URL. Jeśli zasada ma wartość false, następuje wstrzykiwanie tylko do najwyższej klatki. Można go używać razem z atrybutem "match_about_blank", aby wstrzykiwać do ramki about:blank.

Aby stosować wstrzykiwanie w innych ramkach, takich jak data:, blob: i filesystem:, ustaw "match_origin_as_fallback" na true. Więcej informacji znajdziesz w sekcji Wstawianie w powiązanych klatkach.

"all_frames" – wartość logiczna
Opcjonalny. Wartość domyślna to false, co oznacza, że dopasowywana jest tylko górna klatka. Jeśli zasada ma wartość Prawda, kod jest wstrzykiwany do wszystkich klatek, nawet jeśli nie jest ona najwyższą klatką na karcie. Każda ramka jest sprawdzana niezależnie pod kątem wymagań dotyczących adresów URL. Jeśli te wymagania nie zostaną spełnione, nie będzie wstrzykiwana do ramek podrzędnych.
"match_about_blank" – wartość logiczna
Opcjonalny. Domyślna wartość to false. Określa, czy skrypt powinien wstrzykiwać się do ramki about:blank, w której nadrzędny adres URL pasuje do jednego z wzorców zadeklarowanych w "matches".
"match_origin_as_fallback" – wartość logiczna
Opcjonalny. Domyślna wartość to false. Określa, czy skrypt ma wstrzykiwać elementy do ramek, które zostały utworzone przez pasujące źródło, ale których adres URL lub źródło może nie pasować bezpośrednio do wzorca. Należą do nich klatki o różnych schematach, np. about:, data:, blob: i filesystem:.

Środowisko wykonawcze i środowisko wykonawcze

Domyślnie skrypty treści są wstrzykiwane po zakończeniu wczytywania dokumentu i wszystkich zasobów i działają w prywatnym, izolowanym środowisku wykonawczym, które nie jest dostępne dla strony i innych rozszerzeń. Możesz zmienić te wartości domyślne przy użyciu tych kluczy:

"run_at"document_start | document_end | document_idle
Opcjonalny. Określa, kiedy skrypt powinien zostać wstawiony na stronie. Odpowiada on stanom wczytywania Document.readyState:
  • "document_start": interfejs DOM nadal się wczytuje.
  • "document_end": zasoby strony nadal się wczytują
  • "document_idle": DOM i zasoby zostały wczytane. Jest to ustawienie domyślne.
"world"ISOLATED | MAIN
Opcjonalny. Świat JavaScriptu, w którym ma być wykonywany skrypt. Wartość domyślna to "ISOLATED", czyli środowisko wykonawcze unikalne dla skryptu treści. Wybór środowiska "MAIN" oznacza, że skrypt współdzieli środowisko wykonawcze z JavaScriptem strony hosta. Więcej informacji znajdziesz w artykule Praca w izolowanym świecie.

Przykład

Zobacz samouczek Uruchamianie na każdej stronie, aby utworzyć rozszerzenie, które wstrzykuje skrypt treści w pliku manifestu.