chrome.contentSettings

Deskripsi

Gunakan chrome.contentSettings API untuk mengubah setelan yang mengontrol apakah situs dapat menggunakan fitur seperti cookie, JavaScript, dan plugin. Secara lebih umum, setelan konten memungkinkan Anda menyesuaikan perilaku Chrome per situs, bukan secara global.

Izin

contentSettings

Anda harus mendeklarasikan izin "contentSettings" dalam manifes ekstensi Anda untuk menggunakan API. Contoh:

{
  "name": "My extension",
  ...
  "permissions": [
    "contentSettings"
  ],
  ...
}

Konsep dan penggunaan

Pola setelan konten

Anda dapat menggunakan pola untuk menentukan situs yang terpengaruh oleh setiap setelan konten. Misalnya, https://*.youtube.com/* menentukan youtube.com dan semua subdomainnya. Sintaksis untuk pola setelan konten sama dengan sintaksis untuk pola pencocokan, dengan beberapa perbedaan:

  • Untuk URL http, https, dan ftp, jalur harus berupa karakter pengganti (/*). Untuk URL file, jalur harus ditentukan sepenuhnya dan tidak boleh berisi karakter pengganti.
  • Berbeda dengan pola pencocokan, pola setelan konten dapat menentukan nomor port. Jika nomor port ditentukan, polanya hanya akan cocok dengan situs dengan port tersebut. Jika tidak ada nomor port yang ditentukan, pola akan cocok dengan semua port.

Prioritas pola

Jika lebih dari satu aturan setelan konten berlaku untuk situs tertentu, aturan dengan pola yang lebih spesifik akan diutamakan.

Misalnya, pola berikut diurutkan berdasarkan prioritas:

  1. https://www.example.com/*
  2. https://*.example.com/* (cocok dengan example.com dan semua subdomain)
  3. <all_urls> (cocok dengan setiap URL)

Ada tiga jenis karakter pengganti yang memengaruhi seberapa spesifik pola:

  • Karakter pengganti di port (misalnya https://www.example.com:*/*)
  • Karakter pengganti dalam skema (misalnya *://www.example.com:123/*)
  • Karakter pengganti dalam nama host (misalnya https://*.example.com:123/*)

Jika pola lebih spesifik daripada pola lain di satu bagian, tetapi kurang spesifik di bagian yang lain, bagian yang berbeda akan diperiksa dalam urutan berikut: nama host, skema, port. Misalnya, pola berikut diurutkan berdasarkan prioritas:

  1. https://www.example.com:*/* Menentukan nama host dan skema.
  2. *:/www.example.com:123/* Tidak setinggi itu, karena meskipun menentukan nama host, skema tidak ditentukan.
  3. https://*.example.com:123/* Lebih rendah karena meskipun menentukan port dan skema, kode ini memiliki karakter pengganti di nama host.

Pola utama dan sekunder

URL yang dipertimbangkan saat menentukan setelan konten yang akan diterapkan bergantung pada jenis konten. Misalnya, untuk contentSettings.notifications setelan didasarkan pada URL yang ditampilkan di omnibox. URL ini disebut URL "utama".

Beberapa jenis konten dapat mempertimbangkan URL tambahan. Misalnya, apakah situs diizinkan untuk menyetel contentSettings.cookies ditentukan berdasarkan URL permintaan HTTP (yang merupakan URL utama dalam kasus ini) serta URL yang ditampilkan di omnibox (yang disebut URL "sekunder").

Jika beberapa aturan memiliki pola utama dan sekunder, aturan dengan pola utama yang lebih spesifik akan diutamakan. Jika ada beberapa aturan yang memiliki pola utama yang sama, aturan dengan pola sekunder yang lebih spesifik akan diutamakan. Misalnya, daftar pasangan pola utama/sekunder berikut diurutkan berdasarkan prioritas:

PrioritasPola utamaPola sekunder
1https://www.moose.com/*,https://www.wombat.com/*
2https://www.moose.com/*,<all_urls>
3<all_urls>,https://www.wombat.com/*
4<all_urls>,<all_urls>

Pola sekunder tidak didukung untuk setelan konten gambar.

ID resource

ID resource memungkinkan Anda menentukan setelan konten untuk subjenis jenis konten tertentu. Saat ini, satu-satunya jenis konten yang mendukung ID resource adalah contentSettings.plugins, dengan ID resource mengidentifikasi plugin tertentu. Saat menerapkan setelan konten, pertama-tama setelan untuk plugin tertentu akan diperiksa. Jika tidak ada setelan yang ditemukan untuk plugin tertentu, setelan konten umum untuk plugin akan diperiksa.

Misalnya, jika aturan setelan konten memiliki ID resource adobe-flash-player dan pola <all_urls>, aturan tersebut akan lebih diprioritaskan daripada aturan tanpa ID resource dan pola https://www.example.com/*, meskipun pola tersebut lebih spesifik.

Anda bisa mendapatkan daftar ID resource untuk jenis konten dengan memanggil metode contentSettings.ContentSetting.getResourceIdentifiers(). Daftar yang ditampilkan dapat berubah dengan kumpulan plugin yang diinstal di komputer pengguna, tetapi Chrome mencoba menjaga agar ID tetap stabil di seluruh update plugin.

Contoh

Untuk mencoba API ini, instal contoh contentSettings API dari repositori chrome-extension-samples.

Jenis

AutoVerifyContentSetting

Chrome 113 dan yang lebih baru

Enum

"allow"

CameraContentSetting

Chrome 46+

Enum

"allow"

"block"

ClipboardContentSetting

Chrome 121+

Enum

"allow"

"block"

"ask"

ContentSetting

Properti

  • hapus

    void

    Promise

    Menghapus semua aturan setelan konten yang ditetapkan oleh ekstensi ini.

    Fungsi clear akan terlihat seperti ini:

    (details: object, callback?: function) => {...}

    • detail

      objek

      • cakupan

        Cakupan opsional

        Tempat untuk menghapus setelan (default: reguler).

    • callback

      fungsi opsional

      Parameter callback terlihat seperti ini:

      () => void

    • akan menampilkan

      Janji<void>

      Chrome 96 dan yang lebih baru

      Promise didukung di Manifes V3 dan yang lebih baru, tetapi callback disediakan untuk kompatibilitas mundur. Anda tidak dapat menggunakan keduanya pada panggilan fungsi yang sama. Promise di-resolve dengan jenis yang sama yang diteruskan ke callback.

  • get

    void

    Janji

    Mendapatkan setelan konten saat ini untuk pasangan URL tertentu.

    Fungsi get terlihat seperti:

    (details: object, callback?: function) => {...}

    • detail

      objek

      • samaran

        boolean opsional

        Apakah akan memeriksa setelan konten untuk sesi Samaran. (default false)

      • primaryUrl

        string

        URL utama tempat setelan kontennya harus diambil. Perlu diperhatikan bahwa arti URL utama bergantung pada jenis konten.

      • resourceIdentifier

        ID yang lebih spesifik dari jenis konten yang setelan-setelannya akan diambil.

      • secondaryUrl

        string opsional

        URL sekunder yang setelan kontennya harus diambil. Setelan defaultnya adalah URL utama. Perlu diperhatikan bahwa arti URL sekunder bergantung pada jenis konten, dan tidak semua jenis konten menggunakan URL sekunder.

    • callback

      fungsi opsional

      Parameter callback terlihat seperti:

      (details: object) => void

      • detail

        objek

        • setelan

          S

          Setelan konten. Lihat deskripsi setiap objek ContentSetting untuk kemungkinan nilai.

    • akan menampilkan

      Promise&lt;object&gt;

      Chrome 96 dan yang lebih baru

      Promise didukung di Manifes V3 dan yang lebih baru, tetapi callback disediakan untuk kompatibilitas mundur. Anda tidak dapat menggunakan keduanya pada panggilan fungsi yang sama. Promise di-resolve dengan jenis yang sama dengan yang diteruskan ke callback.

  • getResourceIdentifiers

    void

    Janji

    Fungsi getResourceIdentifiers akan terlihat seperti ini:

    (callback?: function) => {...}

    • callback

      fungsi opsional

      Parameter callback terlihat seperti ini:

      (resourceIdentifiers?: ResourceIdentifier[]) => void

      • resourceIdentifiers

        ResourceIdentifier[] opsional

        Daftar ID resource untuk jenis konten ini, atau undefined jika jenis konten ini tidak menggunakan ID resource.

    • akan menampilkan

      Promise&lt;ResourceIdentifier[]&gt;

      Chrome 96 dan yang lebih baru

      Promise didukung di Manifes V3 dan yang lebih baru, tetapi callback disediakan untuk kompatibilitas mundur. Anda tidak dapat menggunakan keduanya pada panggilan fungsi yang sama. Promise di-resolve dengan jenis yang sama dengan yang diteruskan ke callback.

  • set

    void

    Promise

    Menerapkan aturan setelan konten baru.

    Fungsi set terlihat seperti:

    (details: object, callback?: function) => {...}

    • detail

      objek

      • primaryPattern

        string

        Pola untuk URL utama. Untuk mengetahui detail tentang format pola, lihat Pola Setelan Konten.

      • resourceIdentifier

        ID resource untuk jenis konten.

      • cakupan

        Cakupan opsional

        Tempat menetapkan setelan (default: reguler).

      • secondaryPattern

        string opsional

        Pola untuk URL sekunder. Defaultnya adalah mencocokkan semua URL. Untuk mengetahui detail tentang format pola, lihat Pola Setelan Konten.

      • setelan

        apa pun

        Setelan yang diterapkan oleh aturan ini. Lihat deskripsi setiap objek ContentSetting untuk mengetahui kemungkinan nilai.

    • callback

      fungsi opsional

      Parameter callback terlihat seperti ini:

      () => void

    • akan menampilkan

      Janji<void>

      Chrome 96 dan yang lebih baru

      Promise didukung di Manifes V3 dan yang lebih baru, tetapi callback disediakan untuk kompatibilitas mundur. Anda tidak dapat menggunakan keduanya pada panggilan fungsi yang sama. Promise di-resolve dengan jenis yang sama yang diteruskan ke callback.

CookiesContentSetting

Chrome 44 dan yang lebih baru

Enum

"allow"

FullscreenContentSetting

Chrome 44 dan yang lebih baru

Nilai

ImagesContentSetting

Chrome 44 dan yang lebih baru

Enum

"allow"

JavascriptContentSetting

Chrome 44+

Enum

"allow"

LocationContentSetting

Chrome 44 dan yang lebih baru

Enum

"allow"

"block"

MicrophoneContentSetting

Chrome 46 dan yang lebih baru

Enum

"allow"

"block"

MouselockContentSetting

Chrome 44 dan yang lebih baru

Nilai

MultipleAutomaticDownloadsContentSetting

Chrome 44+

Enum

"allow"

"block"

NotificationsContentSetting

Chrome 44 dan yang lebih baru

Enum

"allow"

"block"

PluginsContentSetting

Chrome 44 dan yang lebih baru

Nilai

PopupsContentSetting

Chrome 44 dan yang lebih baru

Enum

"allow"

PpapiBrokerContentSetting

Chrome 44+

Nilai

ResourceIdentifier

Satu-satunya jenis konten yang menggunakan ID resource adalah contentSettings.plugins. Untuk mengetahui informasi selengkapnya, lihat ID Resource.

Properti

  • deskripsi

    string opsional

    Deskripsi resource yang dapat dibaca manusia.

  • id

    string

    ID resource untuk jenis konten tertentu.

Scope

Chrome 44 dan yang lebih baru

Cakupan ContentSetting. Salah satu dari regular: setelan untuk profil reguler (yang diwarisi oleh profil Samaran jika tidak diganti di tempat lain), incognito\_session\_only: setelan untuk profil Samaran yang hanya dapat ditetapkan selama sesi Samaran dan dihapus saat sesi Samaran berakhir (mengganti setelan reguler).

Enum

"regular"

Properti

automaticDownloads

Apakah akan mengizinkan situs mendownload beberapa file secara otomatis. Salah satu dari allow: Izinkan situs mendownload beberapa file secara otomatis, block: Jangan izinkan situs mendownload beberapa file secara otomatis, ask: Tanyakan saat situs ingin mendownload file secara otomatis setelah file pertama. Default-nya adalah ask. URL utama adalah URL dari {i>frame<i} tingkat atas. URL sekunder tidak digunakan.

autoVerify

Chrome 113+

Apakah akan mengizinkan situs menggunakan Private State Tokens API. Salah satu dari allow: Izinkan situs menggunakan Private State Tokens API, block: Blokir situs agar tidak menggunakan Private State Tokens API. Default-nya adalah allow. URL utama adalah URL bingkai tingkat teratas. URL sekunder tidak digunakan. CATATAN: Saat memanggil set(), pola utama harus .

camera

Chrome 46+

Apakah akan mengizinkan situs mengakses kamera. Salah satu dari allow: Izinkan situs mengakses kamera, block: Jangan izinkan situs mengakses kamera, ask: Tanyakan saat situs ingin mengakses kamera. Default-nya adalah ask. URL utama adalah URL dokumen yang meminta akses kamera. URL sekunder tidak digunakan. CATATAN: Setelan 'izinkan' tidak valid jika kedua pola adalah ''.

clipboard

Chrome 121 dan yang lebih baru

Apakah Anda ingin mengizinkan situs mengakses papan klip melalui kemampuan lanjutan Async Clipboard API. Kemampuan "Lanjutan" mencakup apa pun selain menulis format bawaan setelah gestur pengguna, yaitu kemampuan untuk membaca, kemampuan untuk menulis format kustom, dan kemampuan untuk menulis tanpa gestur pengguna. Salah satu dari allow: Izinkan situs menggunakan kemampuan papan klip lanjutan, block: Jangan izinkan situs menggunakan kemampuan papan klip lanjutan, ask: Tanyakan saat situs ingin menggunakan kemampuan papan klip lanjutan. Default-nya adalah ask. URL utama adalah URL dokumen yang meminta akses papan klip. URL sekunder tidak digunakan.

cookies

Apakah akan mengizinkan cookie dan data lokal lainnya disetel oleh situs. Salah satu dari allow: Menerima cookie, block: Memblokir cookie, session\_only: Menerima cookie hanya untuk sesi saat ini. Default-nya adalah allow. URL utama adalah URL yang mewakili asal cookie. URL sekunder adalah URL bingkai level teratas.

fullscreen

Tidak digunakan lagi. Tidak lagi memiliki pengaruh. Izin layar penuh kini diberikan secara otomatis untuk semua situs. Nilai selalu allow.

images

Apakah akan menampilkan gambar. Salah satu dari allow: Tampilkan gambar, block: Jangan tampilkan gambar. Jumlah defaultnya adalah allow URL utama adalah URL bingkai tingkat teratas. URL sekunder adalah URL gambar.

javascript

Apakah akan menjalankan JavaScript. Salah satu dari allow: Jalankan JavaScript, block: Jangan jalankan JavaScript. Jumlah defaultnya adalah allow URL utama adalah URL bingkai tingkat teratas. URL sekunder tidak digunakan.

location

Apakah akan mengizinkan Geolokasi. Salah satu dari allow: Izinkan situs melacak lokasi fisik Anda, block: Jangan izinkan situs melacak lokasi fisik Anda, ask: Tanyakan sebelum mengizinkan situs melacak lokasi fisik Anda. Default-nya adalah ask. URL utama adalah URL dokumen yang meminta data lokasi. URL sekunder adalah URL frame tingkat teratas (yang mungkin sama atau berbeda dengan URL peminta).

microphone

Chrome 46+

Apakah akan mengizinkan situs mengakses mikrofon. Salah satu dari allow: Izinkan situs mengakses mikrofon, block: Jangan izinkan situs mengakses mikrofon, ask: Tanyakan saat situs ingin mengakses mikrofon. Default-nya adalah ask. URL utama adalah URL dokumen yang meminta akses mikrofon. URL sekunder tidak digunakan. CATATAN: Setelan 'izinkan' tidak valid jika kedua polanya adalah ''.

mouselock

Tidak digunakan lagi. Tidak lagi memiliki pengaruh. Izin kunci mouse kini diberikan secara otomatis untuk semua situs. Nilai selalu allow.

notifications

Apakah akan mengizinkan situs menampilkan notifikasi desktop. Salah satu dari allow: Izinkan situs menampilkan notifikasi desktop, block: Jangan izinkan situs menampilkan notifikasi desktop, ask: Tanyakan saat situs ingin menampilkan notifikasi desktop. Default-nya adalah ask. URL utama adalah URL dokumen yang ingin menampilkan notifikasi. URL sekunder tidak digunakan.

plugins

Tidak digunakan lagi. Dengan penghapusan dukungan Flash di Chrome 88, izin ini tidak lagi memiliki efek apa pun. Nilai selalu block. Panggilan ke set() dan clear() akan diabaikan.

popups

Apakah akan mengizinkan situs menampilkan pop-up. Salah satu dari allow: Izinkan situs menampilkan pop-up, block: Jangan izinkan situs menampilkan pop-up. Jumlah defaultnya adalah block URL utama adalah URL bingkai tingkat teratas. URL sekunder tidak digunakan.

unsandboxedPlugins

Tidak digunakan lagi. Sebelumnya, mengontrol apakah akan mengizinkan situs menjalankan plugin tanpa sandbox, tetapi dengan penghapusan proses broker Flash di Chrome 88, izin ini tidak lagi berpengaruh. Nilai selalu block. Panggilan ke set() dan clear() akan diabaikan.