Deskripsi
Gunakan chrome.declarativeContent
API untuk mengambil tindakan bergantung pada konten halaman, tanpa memerlukan izin untuk membaca konten halaman.
Izin
declarativeContent
Konsep dan penggunaan
Declarative Content API memungkinkan Anda mengaktifkan tindakan ekstensi, bergantung pada URL halaman web, atau jika pemilih CSS cocok dengan elemen di halaman, tanpa perlu menambahkan izin host atau memasukkan skrip konten.
Gunakan izin activeTab untuk berinteraksi dengan halaman setelah pengguna mengklik tindakan ekstensi.
Aturan
Aturan terdiri atas kondisi dan tindakan. Jika salah satu kondisi terpenuhi, semua tindakan
telah dijalankan. Tindakannya adalah setIcon()
dan showAction()
.
PageStateMatcher
cocok dengan halaman web jika dan hanya jika semua tercantum
memenuhi kriteria. URL ini dapat cocok dengan URL halaman, pemilih gabungan css
atau status bookmark halaman. Aturan berikut memungkinkan
tindakan ekstensi pada halaman Google jika kolom sandi ada:
let rule1 = {
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: { hostSuffix: '.google.com', schemes: ['https'] },
css: ["input[type='password']"]
})
],
actions: [ new chrome.declarativeContent.ShowAction() ]
};
Untuk mengaktifkan juga tindakan ekstensi bagi situs Google dengan video, Anda dapat menambahkan video karena setiap kondisi cukup untuk memicu semua tindakan yang ditentukan:
let rule2 = {
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: { hostSuffix: '.google.com', schemes: ['https'] },
css: ["input[type='password']"]
}),
new chrome.declarativeContent.PageStateMatcher({
css: ["video"]
})
],
actions: [ new chrome.declarativeContent.ShowAction() ]
};
Peristiwa onPageChanged
menguji apakah ada setidaknya satu aturan yang terpenuhi
kondisi Anda dan menjalankan tindakan. Aturan akan dipertahankan di seluruh sesi penjelajahan; Oleh karena itu, selama
Anda harus menggunakan removeRules
terlebih dahulu untuk menghapus
aturan yang diinstal sebelumnya, lalu menggunakan addRules
untuk mendaftarkan aturan baru.
chrome.runtime.onInstalled.addListener(function(details) {
chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
chrome.declarativeContent.onPageChanged.addRules([rule2]);
});
});
Dengan izin activeTab, ekstensi Anda tidak akan menampilkan izin apa pun dan saat pengguna mengklik tindakan ekstensi, tindakan ekstensi hanya akan berjalan di halaman yang relevan.
Pencocokan URL halaman
PageStateMatcher.pageurl
cocok jika kriteria URL terpenuhi. Tujuan
kriteria yang paling umum adalah rangkaian dari host, jalur, atau URL, diikuti oleh Berisi, Sama dengan, Awalan, atau
Akhiran. Tabel berikut berisi beberapa contoh:
Kriteria | Kecocokan |
---|---|
{ hostSuffix: 'google.com' } |
Semua URL Google |
{ pathPrefix: '/docs/extensions' } |
URL dokumen ekstensi |
{ urlContains: 'developer.chrome.com' } |
Semua URL dokumentasi developer Chrome |
Semua kriteria peka huruf besar/kecil. Untuk mengetahui daftar lengkap kriteria, lihat UrlFilter.
Pencocokan CSS
Kondisi PageStateMatcher.css
harus berupa pemilih gabungan,
artinya Anda tidak dapat memasukkan kombinator seperti spasi kosong atau ">
" di
pemilih. Hal ini membantu Chrome mencocokkan pemilih dengan lebih efisien.
Pemilih Kombinasi (OK) | Pemilih Kompleks (Tidak Oke) |
---|---|
a |
div p |
iframe.special[src^='http'] |
p>span.highlight |
ns|* |
p + ol |
#abcd:checked |
p::first-line |
Kondisi CSS hanya cocok dengan elemen yang ditampilkan: jika elemen yang cocok dengan pemilih Anda
display:none
atau salah satu elemen induknya adalah display:none
, ini tidak menyebabkan kondisi
yang cocok. Elemen yang diberi gaya dengan visibility:hidden
, diposisikan di luar layar, atau disembunyikan oleh elemen lain
masih dapat membuat kondisi Anda cocok.
Pencocokan status yang di-bookmark
Kondisi PageStateMatcher.isBookmarked
memungkinkan pencocokan
status yang di-bookmark dari URL saat ini di profil pengguna. Untuk menggunakan kondisi ini,
"bookmark" izin harus dideklarasikan dalam manifes ekstensi.
Jenis
ImageDataType
Buka https://developer.mozilla.org/en-US/docs/Web/API/ImageData.
Jenis
ImageData
PageStateMatcher
Mencocokkan status halaman web berdasarkan berbagai kriteria.
Properti
-
konstruktor
void
Fungsi
constructor
akan terlihat seperti ini:(arg: PageStateMatcher) => {...}
-
arg
-
akan menampilkan
-
-
css
string[] opsional
Cocok jika semua pemilih CSS dalam array cocok dengan elemen yang ditampilkan dalam frame dengan asal yang sama dengan frame utama halaman. Semua pemilih dalam array ini harus berupa pemilih gabungan untuk mempercepat pencocokan. Catatan: Mencantumkan ratusan pemilih CSS atau mencantumkan pemilih CSS yang cocok ratusan kali per halaman dapat memperlambat situs.
-
isBookmarked
boolean opsional
Chrome 45 dan yang lebih baruMencocokkan jika status halaman yang di-bookmark sama dengan nilai yang ditentukan. Memerlukan izin bookmark.
-
pageUrl
UrlFilter opsional
Mencocokkan jika kondisi
UrlFilter
terpenuhi untuk URL tingkat teratas halaman.
RequestContentScript
Tindakan peristiwa deklaratif yang memasukkan skrip konten.
PERINGATAN: Tindakan ini masih bersifat eksperimental dan tidak didukung di versi stabil Chrome.
Properti
-
konstruktor
void
Fungsi
constructor
akan terlihat seperti ini:(arg: RequestContentScript) => {...}
-
akan menampilkan
-
-
allFrames
boolean opsional
Apakah skrip konten berjalan di semua frame halaman yang cocok, atau hanya di frame atas. Default-nya adalah
false
. -
css
string[] opsional
Nama file CSS yang akan dimasukkan sebagai bagian dari skrip konten.
-
js
string[] opsional
Nama file JavaScript yang akan dimasukkan sebagai bagian dari skrip konten.
-
matchAboutBlank
boolean opsional
Apakah akan menyisipkan skrip konten di
about:blank
danabout:srcdoc
. Jumlah defaultnya adalahfalse
SetIcon
Tindakan peristiwa deklaratif yang menetapkan ikon persegi n-dip untuk tindakan halaman atau tindakan browser ekstensi saat kondisi terkait terpenuhi. Tindakan ini dapat digunakan tanpa izin host, tetapi ekstensi harus memiliki tindakan halaman atau browser.
Hanya satu dari imageData
atau path
yang harus ditentukan. Keduanya merupakan kamus yang memetakan sejumlah piksel ke representasi gambar. Representasi gambar dalam imageData
adalah objek ImageData; misalnya, dari elemen canvas
, sedangkan representasi gambar dalam path
adalah jalur ke file gambar yang terkait dengan manifes ekstensi. Jika piksel layar scale
pas dengan piksel yang tidak bergantung pada perangkat, ikon scale * n
akan digunakan. Jika skala tersebut tidak ada, gambar lain akan diubah ukurannya ke ukuran yang diperlukan.
Properti
-
konstruktor
void
Fungsi
constructor
akan terlihat seperti ini:(arg: SetIcon) => {...}
-
arg
-
akan menampilkan
-
-
imageData
ImageData | objek opsional
Objek
ImageData
atau kamus {size -> ImageData} mewakili ikon yang akan ditetapkan. Jika ikon ditetapkan sebagai kamus, gambar yang akan digunakan akan dipilih bergantung pada kepadatan piksel layar. Jika jumlah piksel gambar yang sesuai dengan satu unit ruang layar sama denganscale
, gambar dengan ukuranscale * n
akan dipilih, dengan n adalah ukuran ikon di UI. Minimal satu gambar harus ditentukan. Perhatikan bahwadetails.imageData = foo
setara dengandetails.imageData = {'16': foo}
.
ShowAction
Tindakan peristiwa deklaratif yang menetapkan tindakan toolbar ekstensi ke status aktif sementara kondisi terkait terpenuhi. Tindakan ini dapat digunakan tanpa izin host. Jika ekstensi memiliki izin activeTab, mengklik tindakan halaman akan memberikan akses ke tab aktif.
Di halaman yang kondisinya tidak terpenuhi, tindakan toolbar ekstensi akan berwarna skala abu-abu. Mengkliknya akan membuka menu konteks dan tidak akan memicu tindakan.
Properti
-
konstruktor
void
Fungsi
constructor
akan terlihat seperti ini:(arg: ShowAction) => {...}
-
arg
-
akan menampilkan
-
ShowPageAction
Harap gunakan declarativeContent.ShowAction
.
Tindakan peristiwa deklaratif yang menetapkan tindakan halaman ekstensi ke status aktif saat kondisi terkait terpenuhi. Tindakan ini dapat digunakan tanpa izin host, tetapi ekstensi harus memiliki tindakan halaman. Jika ekstensi memiliki izin activeTab, mengklik tindakan halaman akan memberikan akses ke tab aktif.
Di halaman yang kondisinya tidak terpenuhi, tindakan toolbar ekstensi akan berwarna skala abu-abu. Mengkliknya akan membuka menu konteks dan tidak akan memicu tindakan.
Properti
-
konstruktor
void
Fungsi
constructor
akan terlihat seperti ini:(arg: ShowPageAction) => {...}
-
arg
-
akan menampilkan
-
Acara
onPageChanged
Menyediakan Declarative Event API yang terdiri dari addRules
, removeRules
, dan getRules
.