"content_scripts"
anahtarı, belirli bir URL kalıbıyla eşleşen bir sayfa her açıldığında kullanılacak statik olarak yüklenmiş bir JavaScript veya CSS dosyasını belirtir. Uzantılar, içerik komut dosyalarını programatik olarak da ekleyebilir. Ayrıntılar için Komut Dosyası Yerleştirme bölümüne bakın.
Manifest
Bunlar "content_scripts"
için desteklenen anahtarlardır. Yalnızca "matches"
anahtarı ve "js"
veya "css"
gereklidir.
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
Her dosya, uzantının kök dizinindeki bir kaynağa giden göreli bir yol içermelidir. Baştaki eğik çizgiler (/
) otomatik olarak kırpılır. "run_at"
anahtarı, her bir dosyanın ne zaman ekleneceğini belirtir.
"css"
- Dizi- İsteğe bağlı. Bu dizinin sırasına göre ve herhangi bir DOM oluşturma veya sayfa oluşturma işlemi gerçekleşmeden önce yerleştirilen CSS dosya yolları dizisi.
"js"
- Dizi,- İsteğe bağlı. Css dosyaları yerleştirildikten sonra, bu dizide göründükleri sırayla eklenen JavaScript dosya yolları dizisi. Dizideki her dize, uzantının kök dizinindeki kaynağa giden göreli bir yol olmalıdır. Baştaki eğik çizgiler ("/") otomatik olarak kırpılır.
Eşleşen URL'ler
Yalnızca "matches"
özelliği gereklidir. Ardından, kodun hangi URL'lere ekleneceğini özelleştirmek için "exclude_matches"
, "include_globs"
ve "exclude_globs"
özelliklerini kullanabilirsiniz. "matches"
tuşu bir uyarı tetikler.
"matches"
- Dizi- Zorunlu. İçerik komut dosyalarının hangi URL kalıplarının içine ekleneceğini belirtir. Söz dizimi için Eşleşme Kalıpları bölümüne bakın.
"exclude_matches"
- Dizi- İsteğe bağlı. İçerik komut dosyalarının yerleştirileceği URL kalıplarını hariç tutar. Söz dizimi için Eşleşme Kalıpları bölümüne bakın.
"include_globs"
- Dizi- İsteğe bağlı. Eşleşmelerden sonra, yalnızca bu glob ile eşleşen URL'leri içerecek şekilde uygulanır. Amacı, @include Greasemonkey anahtar kelimesine öykünmektir.
"exclude_globs"
- Dizi- İsteğe bağlı. Bu glob ile eşleşen URL'leri hariç tutmak için eşleşmelerden sonra uygulanır. Amacı, @excluded Greasemonkey anahtar kelimesine öykünmektir.
Dünya URL'leri, "joker karakter" * ve soru işaretleri içeren URL'lerdir. * joker karakteri boş dize de dahil, herhangi bir uzunluktaki herhangi bir dizeyle eşleşirken soru işareti ? herhangi bir tek karakterle eşleşir.
İçerik komut dosyası aşağıdaki durumlarda sayfaya yerleştirilir:
- URL'si tüm
"matches"
ve"include_globs"
kalıplarıyla eşleşir. - Ayrıca URL,
"exclude_matches"
veya"exclude_globs"
kalıplarıyla eşleşmiyor.
Glob ve URL eşleştirme örnekleri
"include_globs"
manifest.json
{
...
"content_scripts": [
{
"matches": ["https://*.example.com/*"],
"include_globs": ["https://???.example.com/foo/*"],
"js": ["content-script.js"]
}
],
...
}
https://www.example.com/foo/bar https://the.example.com/foo/
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"]
}
],
...
}
https://www.example.com/arts/index.html https://www.example.com/jobs/index.html
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"]
}
],
...
}
https://history.example.com https://.example.com/music
https://science.example.com https://www.example.com/science
Gelişmiş özelleştirme örneği
manifest.json
{
...
"content_scripts": [
{
"matches": ["https://*.example.com/*"],
"exclude_matches": ["*://*/*business*"],
"include_globs": ["*example.com/???s/*"],
"exclude_globs": ["*science*"],
"js": ["content-script.js"]
}
],
...
}
https://www.example.com/arts/index.html https://.example.com/jobs/index.html
https://science.example.com https://www.example.com/jobs/business https://www.example.com/science
Kareler
"all_frames"
anahtarı, içerik komut dosyasının belirtilen URL gereksinimleriyle eşleşen tüm karelere yerleştirilip yerleştirilmeyeceğini belirtir. false
değerine ayarlanırsa yalnızca en üstteki kareye eklenir. Bir about:blank
çerçevesine eklemek için "match_about_blank"
ile birlikte kullanılabilir.
data:
, blob:
ve filesystem:
gibi diğer karelere ekleme yapmak için "match_origin_as_fallback"
özelliğini true
olarak ayarlayın. Ayrıntılar için İlgili çerçevelere ekleme bölümüne bakın.
"all_frames"
Boole- İsteğe bağlı. Varsayılan olarak
false
değerine ayarlanır, yani yalnızca üst kare eşleştirilir. True (doğru) değerine ayarlanırsa çerçeve, sekmenin en üstündeki kare olmasa bile tüm karelere eklenir. Her çerçeve, URL gereksinimleri açısından bağımsız olarak kontrol edilir. URL gereksinimleri karşılanmazsa alt çerçevelere yerleştirilmez. "match_about_blank"
- Boole- İsteğe bağlı. Varsayılan olarak
false
değerine ayarlanır. Komut dosyasının üst URL'nin"matches"
politikasında belirtilen kalıplardan biriyle eşleştiği birabout:blank
çerçevesine eklenip eklenmeyeceğini belirtir. "match_origin_as_fallback"
- Boole- İsteğe bağlı. Varsayılan olarak
false
değerine ayarlanır. Komut dosyasının eşleşen bir kaynak tarafından oluşturulan ancak URL'si veya kaynağı kalıpla doğrudan eşleşmeyebileceği karelere ekleme yapması gerekip gerekmediği. Bunlarabout:
,data:
,blob:
vefilesystem:
gibi farklı şemalara sahip kareleri içerir.
Çalışma zamanı ve yürütme ortamı
Varsayılan olarak, içerik komut dosyaları doküman ve tüm kaynakların yüklenmesi tamamlandığında ve sayfa veya diğer uzantıların erişimi olmayan özel, izole bir yürütme ortamında barındırıldığında yerleştirilir. Bu varsayılan ayarları aşağıdaki tuşlarla değiştirebilirsiniz:
"run_at"
-document_start
|document_end
|document_idle
- İsteğe bağlı. Komut dosyasının sayfaya ne zaman eklenmesi gerektiğini belirtir. Document.readyState'in yükleme durumlarına karşılık gelir:
"document_start"
: DOM hâlâ yükleniyor."document_end"
: Sayfanın kaynakları hâlâ yükleniyor"document_idle"
: DOM ve kaynakların yüklenmesi tamamlandı. Bu, varsayılan ayardır.
"world"
-ISOLATED
|MAIN
- İsteğe bağlı. Bir komut dosyasının içinde yürütüleceği JavaScript dünyası. Varsayılan olarak içerik komut dosyasına özgü yürütme ortamı olan
"ISOLATED"
değerine ayarlanır."MAIN"
dünyasının seçilmesi, komut dosyasının yürütme ortamını ana makine sayfasının JavaScript'i ile paylaşacağı anlamına gelir. Daha fazla bilgi edinmek için Ayrı dünyalarda çalışma başlıklı makaleye bakın.
Örnek
Manifest'e içerik komut dosyası yerleştiren bir uzantı oluşturmak için Her sayfada çalıştırma eğiticisine bakın.