Açıklama
Sayfanın içeriğini okuma izni gerekmeden sayfanın içeriğine bağlı işlemler yapmak için chrome.declarativeContent
API'yi kullanın.
İzinler
declarativeContent
Kavramlar ve kullanım
Declarative Content API, barındırma izinleri eklemenize veya içerik komut dosyası eklemenize gerek kalmadan, uzantınızın işlemini bir web sayfasının URL'sine veya bir CSS seçicinin sayfadaki bir öğeyle eşleşmesine bağlı olarak etkinleştirmenize olanak tanır.
Kullanıcı uzantının işlemini tıkladıktan sonra bir sayfayla etkileşimde bulunmak için activeTab iznini kullanın.
Kurallar
Kurallar, koşullardan ve işlemlerden oluşur. Koşullardan herhangi biri karşılanırsa tüm işlemler yürütülür. İşlemler setIcon()
ve showAction()
şeklindedir.
PageStateMatcher
, yalnızca listelenen tüm ölçütler karşılanırsa web sayfalarıyla eşleşir. Bir sayfa URL'si, CSS birleşik seçici veya bir sayfanın yer işareti eklenmiş durumu ile eşleşebilir. Aşağıdaki kural, şifre alanı bulunduğunda uzantının Google sayfalarındaki işlemini etkinleştirir:
let rule1 = {
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: { hostSuffix: '.google.com', schemes: ['https'] },
css: ["input[type='password']"]
})
],
actions: [ new chrome.declarativeContent.ShowAction() ]
};
Uzantı işleminin video içeren Google siteleri için de etkinleştirilmesi amacıyla ikinci bir koşul ekleyebilirsiniz. Belirtilen tüm işlemleri tetiklemek için her koşul yeterlidir:
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() ]
};
onPageChanged
etkinliği, herhangi bir kuralın en az bir koşulu karşılayıp karşılamadığını test eder ve işlemleri yürütür. Kurallar, tarama oturumları boyunca devam eder. Bu nedenle, uzantı yükleme süresi boyunca önce önceden yüklenmiş kuralları temizlemek için removeRules
'ı, ardından yenilerini kaydetmek için addRules
'i kullanmanız gerekir.
chrome.runtime.onInstalled.addListener(function(details) {
chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
chrome.declarativeContent.onPageChanged.addRules([rule2]);
});
});
activeTab izniyle uzantınız herhangi bir izin uyarısı göstermez ve kullanıcı uzantı işlemini tıkladığında yalnızca alakalı sayfalarda çalışır.
Sayfa URL'si eşleştirme
URL ölçütleri karşılandığında PageStateMatcher.pageurl
eşleşir. En yaygın ölçütler, ana makine, yol veya URL'nin ardından İçerir, Eşittir, Önek veya Sonek'in geldiği bir dize birleştirmedir. Aşağıdaki tabloda birkaç örnek verilmiştir:
Ölçütler | Eşleşmeler |
---|---|
{ hostSuffix: 'google.com' } |
Tüm Google URL'leri |
{ pathPrefix: '/docs/extensions' } |
Uzantı dokümanı URL'leri |
{ urlContains: 'developer.chrome.com' } |
Tüm Chrome geliştirici belgeleri URL'leri |
Tüm ölçütler büyük/küçük harfe duyarlıdır. Ölçütlerin tam listesi için UrlFilter konusuna bakın.
CSS Eşleştirme
PageStateMatcher.css
koşulları bileşik seçici olmalıdır. Yani seçicilerinize boşluk veya ">
" gibi birleştiriciler ekleyemezsiniz. Bu, Chrome'un seçicileri daha verimli bir şekilde eşleştirmesine yardımcı olur.
Bileşik Seçiciler (Tamam) | Karmaşık Seçiciler (Tamam Değil) |
---|---|
a |
div p |
iframe.special[src^='http'] |
p>span.highlight |
ns|* |
p + ol |
#abcd:checked |
p::first-line |
CSS koşulları yalnızca görüntülenen öğelerle eşleşir: Seçicinizle eşleşen bir öğe display:none
ise veya üst öğelerinden biri display:none
ise koşulun eşleşmesine neden olmaz. visibility:hidden
ile biçimlendirilmiş, ekran dışında konumlandırılmış veya diğer öğeler tarafından gizlenmiş öğeler, durumunuzun eşleşmesine neden olabilir.
Yer işareti eklenmiş durum eşleştirme
PageStateMatcher.isBookmarked
koşulu, kullanıcının profilindeki mevcut URL'nin yer işareti durumunun eşleştirilmesine olanak tanır. Bu koşuldan yararlanmak için "yer işaretleri" izninin uzantı manifest belirtilmesi gerekir.
Türler
ImageDataType
https://developer.mozilla.org/en-US/docs/Web/API/ImageData adresine bakın.
Tür
ImageData
PageStateMatcher
Çeşitli ölçütlere göre bir web sayfasının durumunu eşleştirir.
Özellikler
-
constructor
geçersiz
constructor
işlevi şu şekilde görünür:(arg: PageStateMatcher) => {...}
-
bağ
-
returns
-
-
css
string[] isteğe bağlı
Dizideki CSS seçicilerinin tümü, sayfanın ana çerçevesiyle aynı köke sahip bir çerçevedeki görüntülenen öğelerle eşleşirse eşleşir. Eşleştirmeyi hızlandırmak için bu dizideki tüm seçiciler bileşik seçici olmalıdır. Not: Yüzlerce CSS seçiciyi listelemek veya sayfa başına yüzlerce kez eşleşen CSS seçicileri listelemek web sitelerini yavaşlatabilir.
-
isBookmarked
boole isteğe bağlı
Chrome 45 ve sonraki sürümlerSayfanın yer işareti durumu belirtilen değere eşitse eşleşir. Yer işaretleri izni gerekir.
-
pageUrl
UrlFilter isteğe bağlı
Sayfanın üst düzey URL'si için
UrlFilter
koşullarının karşılanması durumunda eşleşir.
RequestContentScript
İçerik komut dosyası ekleyen açıklayıcı etkinlik işlemi.
UYARI: Bu işlem hâlâ deneyseldir ve Chrome'un kararlı sürümlerinde desteklenmez.
Özellikler
-
constructor
geçersiz
constructor
işlevi şu şekilde görünür:(arg: RequestContentScript) => {...}
-
returns
-
-
allFrames
boole isteğe bağlı
İçerik komut dosyasının eşleşen sayfanın tüm çerçevelerinde mi yoksa yalnızca üst çerçevede mi çalışacağını belirtir.
false
varsayılandır. -
css
string[] isteğe bağlı
İçerik komut dosyasının bir parçası olarak eklenecek CSS dosyalarının adları.
-
js
string[] isteğe bağlı
İçerik komut dosyasının bir parçası olarak eklenecek JavaScript dosyalarının adları.
-
matchAboutBlank
boole isteğe bağlı
İçerik komut dosyasının
about:blank
veabout:srcdoc
'e eklenip eklenmeyeceği. Varsayılan değerfalse
'tir.
SetIcon
İlgili koşullar karşılanırken uzantının sayfa işlemi veya tarayıcı işlemi için n-dip kare simgesini ayarlayan açıklayıcı etkinlik işlemi. Bu işlem barındırma izinleri olmadan kullanılabilir ancak uzantının bir sayfa veya tarayıcı işlemi olmalıdır.
imageData
veya path
özelliklerinden tam olarak biri belirtilmelidir. Her ikisi de bir dizi pikseli bir resim temsiliyle eşleyen sözlüklerdir. imageData
içindeki resim temsili, bir canvas
öğesinden alınan ImageData nesnesi iken path
içindeki resim temsili, uzantının manifest'ine göre bir resim dosyasının yoludur. scale
ekran pikseli, cihazdan bağımsız bir piksele sığıyorsa scale * n
simgesi kullanılır. Bu ölçek yoksa başka bir resim gerekli boyuta yeniden boyutlandırılır.
Özellikler
-
constructor
geçersiz
constructor
işlevi şu şekilde görünür:(arg: SetIcon) => {...}
-
bağ
-
returns
-
-
imageData
ImageData | nesne isteğe bağlı
Ayarlanacak simgeyi temsil eden bir
ImageData
nesnesi veya sözlük ({size -> ImageData}). Simge bir sözlük olarak belirtilirse kullanılan resim, ekranın piksel yoğunluğuna göre seçilir. Bir ekran alanı birimine sığabilecek resim piksellerinin sayısıscale
isescale * n
boyutunda bir resim seçilir. Burada n, kullanıcı arayüzündeki simgenin boyutudur. En az bir resim belirtilmelidir.details.imageData = foo
değerinindetails.imageData = {'16': foo}
değerine eşit olduğunu unutmayın.
ShowAction
İlgili koşullar karşılanırken uzantının araç çubuğu işlemini etkin duruma ayarlayan açıklayıcı bir etkinlik işlemi. Bu işlem, ana makine izinleri olmadan kullanılabilir. Uzantı activeTab iznine sahipse sayfa işlemini tıklamak etkin sekmeye erişim izni verir.
Koşulların karşılanmadığı sayfalarda uzantının araç çubuğu işlemi gri tonlamalı olur ve tıklandığında işlem tetiklenmez, bağlam menüsü açılır.
Özellikler
-
constructor
geçersiz
constructor
işlevi şu şekilde görünür:(arg: ShowAction) => {...}
-
bağ
-
returns
-
ShowPageAction
Lütfen declarativeContent.ShowAction
kullanın.
İlgili koşullar karşılanırken uzantının sayfa işlemini etkin duruma ayarlayan açıklayıcı bir etkinlik işlemi. Bu işlem barındırma izinleri olmadan kullanılabilir ancak uzantının bir sayfa işlemi olmalıdır. Uzantı activeTab iznine sahipse sayfa işlemini tıklamak etkin sekmeye erişim izni verir.
Koşulların karşılanmadığı sayfalarda uzantının araç çubuğu işlemi gri tonlamalı olur ve tıklandığında işlem tetiklenmez, bağlam menüsü açılır.
Özellikler
-
constructor
geçersiz
constructor
işlevi şu şekilde görünür:(arg: ShowPageAction) => {...}
-
bağ
-
returns
-
Etkinlikler
onPageChanged
addRules
, removeRules
ve getRules
'den oluşan Declarative Event API'yi sağlar.