Opis
Interfejs API chrome.contentSettings
umożliwia zmianę ustawień, które określają, czy strony mogą korzystać z takich funkcji jak pliki cookie, JavaScript i wtyczki. Ogólnie rzecz biorąc, ustawienia treści umożliwiają dostosowanie działania Chrome w poszczególnych witrynach, a nie globalnie.
Uprawnienia
contentSettings
Aby korzystać z interfejsu API, musisz zadeklarować uprawnienia "contentSettings"
w pliku manifestu rozszerzenia. Przykład:
{
"name": "My extension",
...
"permissions": [
"contentSettings"
],
...
}
Pojęcia i zastosowanie
Wzory ustawień treści
Przy użyciu wzorców możesz określać witryny, na które mają wpływ poszczególne ustawienia treści. Na przykład https://*.youtube.com/*
określa youtube.com i wszystkie jej subdomeny. Składnia wzorców ustawień treści jest taka sama jak w przypadku wzorców dopasowania, z kilkoma różnicami:
- W przypadku adresów URL
http
,https
iftp
ścieżka musi być symbolem wieloznacznym (/*
). W przypadku adresów URLfile
ścieżka musi być całkowicie określona i nie może zawierać symboli wieloznacznych. - W odróżnieniu od wzorców dopasowania wzorce ustawień treści mogą określać numer portu. Jeśli jest określony numer portu, wzorzec pasuje tylko do witryn z tym portem. Jeśli nie podasz numeru portu, wzór pasuje do wszystkich portów.
Wzór priorytetów
Jeśli do danej witryny ma zastosowanie więcej niż 1 reguła ustawień treści, pierwszeństwo ma reguła z bardziej szczegółowym wzorcem.
Na przykład te wzorce są uporządkowane według pierwszeństwa:
https://www.example.com/*
https://*.example.com/*
(zgodny z example.com i wszystkimi subdomenami)<all_urls>
(dopasowanie do każdego adresu URL)
Na trafność wzorca wpływają 3 rodzaje symboli wieloznacznych:
- Symbole wieloznaczne w porcie (np.
https://www.example.com:*/*
) - Symbole wieloznaczne w schemacie (np.
*://www.example.com:123/*
) - Symbole wieloznaczne w nazwie hosta (np.
https://*.example.com:123/*
).
Jeśli wzór jest bardziej szczegółowy niż inny wzór w jednym miejscu, ale mniej szczegółowy w innym, różne części są sprawdzane w tej kolejności: nazwa hosta, schemat, port. Na przykład te wzorce są uporządkowane według pierwszeństwa:
https://www.example.com:*/*
Określa nazwę hosta i schemat.*:/www.example.com:123/*
Nie jest to tak wysokie ryzyko, ponieważ chociaż podano nazwę hosta, nie podano schematu.https://*.example.com:123/*
Niższa wartość, ponieważ chociaż określa port i schemat, ma w nazwie hosta symbol wieloznaczny.
Wzory podstawowe i dodatkowe
Adres URL brany pod uwagę przy podejmowaniu decyzji o tym, które ustawienie treści zastosować, zależy od typu treści.
Na przykład w przypadku contentSettings.notifications
ustawienia są określane na podstawie adresu URL wyświetlanego w pasku wielofunkcyjnym. Ten adres URL nazywa się „podstawowym”.
Niektóre typy treści mogą uwzględniać dodatkowe adresy URL. Na przykład to, czy witryna może ustawić contentSettings.cookies
, jest określane na podstawie adresu URL żądania HTTP (w tym przypadku jest to podstawowy adres URL) i adresu URL wyświetlanego w omniboksie (nazywanym „dodatkowym” adresem URL).
Jeśli wiele reguł ma wzorce podstawowe i dodatkowe, pierwszeństwo ma reguła z bardziej szczegółowym wzorcem podstawowym. Jeśli kilka reguł ma ten sam wzór główny, pierwszeństwo ma reguła z bardziej szczegółowym wzorem dodatkowym. Na przykład ta lista par wzorów głównych i dodatkowych jest uporządkowana według pierwszeństwa:
Pierwszeństwo | Wzorzec główny | Wzorzec dodatkowy |
---|---|---|
1 | https://www.moose.com/* , | https://www.wombat.com/* |
2 | https://www.moose.com/* , | <all_urls> |
3 | <all_urls> , | https://www.wombat.com/* |
4 | <all_urls> , | <all_urls> |
W przypadku ustawienia zawartości obrazów nie są obsługiwane wzory dodatkowe.
Identyfikatory zasobów
Identyfikatory zasobów umożliwiają określenie ustawień treści dla określonych podtypów typu treści.
Obecnie jedynym typem treści, który obsługuje identyfikatory zasobów, jest contentSettings.plugins
. Identyfikator zasobu identyfikuje konkretną wtyczkę. Podczas stosowania ustawień treści najpierw sprawdzane są ustawienia konkretnego wtyczka. Jeśli nie znaleziono ustawień konkretnej wtyczki, sprawdzane są ogólne ustawienia treści dotyczące wtyczek.
Jeśli na przykład reguła ustawienia treści ma identyfikator zasobu adobe-flash-player
i wzór <all_urls>
, ma pierwszeństwo przed regułą bez identyfikatora zasobu i wzorca https://www.example.com/*
, nawet jeśli wzorzec jest bardziej szczegółowy.
Aby uzyskać listę identyfikatorów zasobów określonego typu treści, wywołaj metodę contentSettings.ContentSetting.getResourceIdentifiers()
. Zwrócona lista może się zmieniać w zależności od zestawu zainstalowanych wtyczek na komputerze użytkownika, ale Chrome stara się zachować stabilność identyfikatorów podczas aktualizacji wtyczek.
Przykłady
Aby wypróbować ten interfejs API, zainstaluj przykład contentSettings API z repozytorium chrome-extension-samples.
Typy
AutoVerifyContentSetting
Typ wyliczeniowy
"block"
CameraContentSetting
Typ wyliczeniowy
"block"
ClipboardContentSetting
Typ wyliczeniowy
"block"
ContentSetting
Właściwości
-
wyczyść
nieważne
ObiecujemyWyczyść wszystkie reguły ustawień treści skonfigurowane przez to rozszerzenie.
Funkcja
clear
ma postać:(details: object, callback?: function) => {...}
-
szczegóły
Obiekt
-
zakres
Zakres opcjonalnie
Gdzie można wyczyścić ustawienie (domyślnie: zwykłe).
-
-
wywołanie zwrotne
function opcjonalny
Parametr
callback
ma postać:() => void
-
returns
Obietnica<void>
Chrome 96 i nowszeObietnice są obsługiwane w platformie Manifest V3 i nowszych, ale wywołania zwrotne są obsługiwane na potrzeby zgodności wstecznej. Nie możesz używać obu w tym samym wywołaniu funkcji. Obietnica jest realizowana z tym samym typem, który jest przekazywany do wywołania zwrotnego.
-
-
get
nieważne
ObietnicePobiera bieżące ustawienie treści dla danej pary adresów URL.
Funkcja
get
ma postać:(details: object, callback?: function) => {...}
-
szczegóły
Obiekt
-
incognito
Wartość logiczna opcjonalna
Określa, czy należy sprawdzić ustawienia treści dla sesji w trybie incognito. (wartość domyślna to false)
-
primaryUrl
ciąg znaków
Podstawowy adres URL, dla którego należy pobrać ustawienie treści. Pamiętaj, że znaczenie adresu URL głównego zależy od typu treści.
-
resourceIdentifier
IdentyfikatorZasobu opcjonalny
Bardziej szczegółowy identyfikator typu treści, dla którego należy pobrać ustawienia.
-
secondaryUrl
ciąg znaków opcjonalny
Dodatkowy adres URL, dla którego należy pobrać ustawienie treści. Domyślnie jest to adres URL główny. Pamiętaj, że znaczenie adresu URL dodatkowego zależy od typu treści. Nie wszystkie typy treści używają adresów URL dodatkowych.
-
-
wywołanie zwrotne
function opcjonalny
Parametr
callback
wygląda tak:(details: object) => void
-
szczegóły
Obiekt
-
ustawienie
T
Ustawienie treści. Możliwe wartości znajdziesz w opisie poszczególnych obiektów ContentSetting.
-
-
-
returns
Obietkw<object>
Chrome 96 lub nowszyObietnice są obsługiwane w pliku manifestu w wersji 3 i późniejszych, ale wywołania zwrotne są dostępne ze względu na zgodność wsteczną. Nie możesz używać obu w tym samym wywołaniu funkcji. Obiet na obietnice zwracany jest z tym samym typem, który jest przekazywany do funkcji zwracającej wywołanie zwrotne.
-
-
getResourceIdentifiers
nieważne
ObiecujemyFunkcja
getResourceIdentifiers
ma postać:(callback?: function) => {...}
-
wywołanie zwrotne
function opcjonalny
Parametr
callback
ma postać:(resourceIdentifiers?: ResourceIdentifier[]) => void
-
resourceIdentifiers
ResourceIdentifier[] opcjonalnie
Lista identyfikatorów zasobów dla tego typu treści lub
undefined
, jeśli ten typ treści nie używa identyfikatorów zasobów.
-
-
returns
Promise<ResourceIdentifier[]>
Chrome 96+Obietnice są obsługiwane w pliku manifestu w wersji 3 i późniejszych, ale wywołania zwrotne są dostępne ze względu na zgodność wsteczną. Nie można użyć obu w tym samym wywołaniu funkcji. Obiet na obietnice zwracany jest z tym samym typem, który jest przekazywany do funkcji zwracającej wywołanie zwrotne.
-
-
zestaw
nieważne
ObietniceStosuje nową regułę ustawień treści.
Funkcja
set
ma postać:(details: object, callback?: function) => {...}
-
szczegóły
Obiekt
-
primaryPattern
ciąg znaków
Wzorzec głównego adresu URL. Szczegółowe informacje na temat formatu wzorca znajdziesz w artykule Wzorce ustawień treści.
-
resourceIdentifier
Opcjonalny ResourceIdentifier
Identyfikator zasobu dla typu treści.
-
zakres
Zakres opcjonalny
Gdzie ustawić ustawienie (domyślnie: regularne).
-
secondaryPattern
ciąg znaków opcjonalny
Wzorzec dodatkowego adresu URL. Domyślnie dopasowuje wszystkie adresy URL. Szczegółowe informacje o formacie wzorca znajdziesz w artykule Wzorce ustawień treści.
-
ustawienie
każdy
Ustawienie stosowane przez tę regułę. Możliwe wartości znajdziesz w opisie poszczególnych obiektów ContentSetting.
-
-
wywołanie zwrotne
function opcjonalny
Parametr
callback
ma postać:() => void
-
returns
Obietnica<void>
Chrome 96 i nowszeObietnice są obsługiwane w pliku manifestu w wersji 3 i późniejszych, ale wywołania zwrotne są dostępne ze względu na zgodność wsteczną. Nie możesz używać obu w tym samym wywołaniu funkcji. Obiet na obietnice zwraca ten sam typ, który jest przekazywany do funkcji zwracającej wywołanie zwrotne.
-
CookiesContentSetting
Typ wyliczeniowy
"block"
"session_only"
FullscreenContentSetting
Wartość
"allow"
ImagesContentSetting
Typ wyliczeniowy
"block"
JavascriptContentSetting
Typ wyliczeniowy
"block"
LocationContentSetting
Typ wyliczeniowy
"block"
MicrophoneContentSetting
Typ wyliczeniowy
"block"
MouselockContentSetting
Wartość
"allow"
MultipleAutomaticDownloadsContentSetting
Typ wyliczeniowy
"block"
NotificationsContentSetting
Typ wyliczeniowy
"block"
PluginsContentSetting
Wartość
PopupsContentSetting
Typ wyliczeniowy
"block"
PpapiBrokerContentSetting
Wartość
ResourceIdentifier
Jedynym typem treści, który korzysta z identyfikatorów zasobów, jest contentSettings.plugins
. Aby dowiedzieć się więcej, przeczytaj artykuł Identyfikatory zasobów.
Właściwości
-
opis
ciąg znaków opcjonalny
Zrozumiały dla człowieka opis zasobu.
-
id
ciąg znaków
Identyfikator zasobu danego typu treści.
Scope
Zakres ContentSetting. Jedna z tych wartości: regular
: ustawienie zwykłego profilu (dziedziczone przez profil incognito, jeśli nie zostało zastąpione innym),
incognito\_session\_only
: ustawienie profilu incognito, które można ustawić tylko podczas sesji incognito i jest usuwane po zakończeniu sesji (zastępuje zwykłe ustawienia).
Typ wyliczeniowy
Właściwości
automaticDownloads
Określa, czy witryny mogą automatycznie pobierać wiele plików. allow
: zezwalaj witrynom na automatyczne pobieranie wielu plików, block
: nie zezwalaj witrynom na automatyczne pobieranie wielu plików, ask
: pytaj, czy witryna chce automatycznie pobrać pliki po pierwszym pliku.
Wartość domyślna to ask
.
Główny adres URL to adres URL ramki najwyższego poziomu. Dodatkowy adres URL nie jest używany.
autoVerify
Określa, czy witryny mogą korzystać z interfejsu Private State Tokens API. allow
: Zezwalaj witrynom na korzystanie z interfejsu Private State Tokens API,
block
: Zablokuj witrynom korzystanie z interfejsu Private State Tokens API.
Wartość domyślna to allow
.
Główny adres URL to adres URL ramki najwyższego poziomu. Dodatkowy adres URL nie jest używany. UWAGA: podczas wywoływania funkcji set()
główny wzór musi być .
camera
Określa, czy zezwolić witrynom na dostęp do kamery. Jedna z tych opcji:
allow
: Zezwól stronom na dostęp do kamery,
block
: nie zezwalaj witrynom na dostęp do kamery,
ask
: pytaj, gdy strona chce uzyskać dostęp do kamery.
Wartość domyślna to ask
.
Główny adres URL to adres URL dokumentu, który poprosił o dostęp do kamery. Dodatkowy adres URL nie jest używany.
UWAGA: ustawienie „Zezwól” jest nieprawidłowe, jeśli oba wzorce są „'”.
clipboard
Określa, czy zezwolić witrynom na dostęp do schowka za pomocą zaawansowanych funkcji interfejsu Async Clipboard API. „Zaawansowane” funkcje obejmują wszystko oprócz zapisywania wbudowanych formatów po wykonaniu przez użytkownika odpowiedniego działania, czyli możliwość odczytu, możliwość zapisywania w formatach niestandardowych i możliwość zapisywania bez wykonywania przez użytkownika odpowiedniego działania. Jedna z tych możliwości:
allow
: zezwól witrynom na korzystanie z zaawansowanych funkcji schowka,
block
: nie zezwalaj witrynom na korzystanie z zaawansowanych funkcji schowka,
ask
: pytaj, gdy witryna chce korzystać z zaawansowanych funkcji schowka.
Wartość domyślna to ask
.
Podstawowy URL to adres URL dokumentu, który zażądał dostępu do schowka. Adres URL dodatkowy nie jest używany.
Typ
cookies
Określa, czy witryny mogą ustawiać pliki cookie i inne dane lokalne. allow
: akceptuj pliki cookie,block
: blokuj pliki cookie,session\_only
: akceptuj pliki cookie tylko w ramach bieżącej sesji.
Wartość domyślna to allow
.
Podstawowy adres URL to adres URL reprezentujący źródło pliku cookie. Drugi adres URL to adres URL ramki najwyższego poziomu.
fullscreen
Wycofano. Nie ma już żadnego wpływu. Uprawnienia do wyświetlania na pełnym ekranie są teraz automatycznie przyznawane w przypadku wszystkich witryn. Wartość to zawsze allow
.
images
Określa, czy wyświetlać obrazy. Jedna z tych możliwości: allow
: pokaż obrazy,
block
: nie pokazuj obrazów.
Wartość domyślna to allow
.
Główny adres URL to adres URL ramki najwyższego poziomu. Drugi adres URL to adres URL obrazu.
Typ
javascript
Określa, czy ma być wykonywany kod JavaScript. Jedna z tych możliwości: allow
uruchom JavaScript,
block
: nie uruchamiaj JavaScriptu.
Wartość domyślna to allow
.
Główny adres URL to adres URL ramki najwyższego poziomu. Dodatkowy adres URL nie jest używany.
Typ
location
Określa, czy zezwolić na geolokalizację. Jedna z tych możliwości:
allow
: zezwalaj witrynom na śledzenie fizycznej lokalizacji;
block
: nie zezwalaj witrynom na śledzenie fizycznej lokalizacji;
ask
: zapytaj, zanim zezwolisz stronom na śledzenie Twojej fizycznej lokalizacji.
Wartość domyślna to ask
.
Podstawowy URL to URL dokumentu, z którego wysłano żądanie danych o lokalizacji. Drugi adres URL to adres URL ramki najwyższego poziomu (może się on różnić od adresu URL przesyłanego żądania).
microphone
Określa, czy witryny mają mieć dostęp do mikrofonu. Jedna z tych możliwości:
allow
: Zezwól stronom na dostęp do mikrofonu,
block
: nie zezwalaj witrynom na dostęp do mikrofonu,
ask
: pytaj, gdy strona chce uzyskać dostęp do mikrofonu.
Wartość domyślna to ask
.
Podstawowy adres URL to adres URL dokumentu, który poprosił o dostęp do mikrofonu. Dodatkowy adres URL nie jest używany.
UWAGA: ustawienie „Zezwól” jest nieprawidłowe, jeśli oba wzorce są „'”.
mouselock
Wycofany. Nie ma już żadnych efektów. Uprawnienia do blokowania myszy są teraz automatycznie przyznawane w przypadku wszystkich witryn. Wartość to zawsze allow
.
Typ
notifications
Określa, czy strony mogą wyświetlać powiadomienia na pulpicie. Jedna z tych możliwości:
allow
: Zezwalaj witrynom na wyświetlanie powiadomień na pulpicie,
block
: nie zezwalaj witrynom na wyświetlanie powiadomień na pulpicie,
ask
: pytaj, gdy witryna chce pokazywać powiadomienia na pulpicie.
Wartość domyślna to ask
.
Główny adres URL to adres URL dokumentu, który ma wyświetlać powiadomienie. Adres URL podany jako drugi nie jest używany.
plugins
Wycofano. W Chrome 88 usunięto obsługę Flasha, więc to uprawnienie nie ma już żadnego wpływu. Wartość to zawsze block
. Połączenia do numerów set()
i clear()
będą ignorowane.
popups
Określa, czy witryny mają wyświetlać wyskakujące okienka. Jedna z tych opcji:
allow
: zezwalaj witrynom na wyświetlanie wyskakujących okienek,
block
: nie zezwalaj witrynom na wyświetlanie wyskakujących okienek.
Wartość domyślna to block
.
Podstawowy adres URL to adres ramki najwyższego poziomu. Adres URL dodatkowy nie jest używany.
unsandboxedPlugins
Wycofano. Wcześniej określało ono, czy zezwalać witrynom na uruchamianie wtyczek poza piaskownicą. Jednak po usunięciu procesu brokera Flash w Chrome 88 to uprawnienie nie ma już żadnego efektu. Wartość to zawsze block
. Połączenia do numerów set()
i clear()
będą ignorowane.