"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ı belirtir. Uzantılar, içerik komut dosyalarını programatik olarak da yerleştirebilir. Ayrıntılar için Komut Dosyası Yerleştirme başlıklı makaleyi inceleyin.
Manifest
"content_scripts" için desteklenen anahtarlar şunlardı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",
}
],
...
}
Dosyalar
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 dosyanın ne zaman ekleneceğini belirtir.
"css"- Dizi- İsteğe bağlı. Bu dizinin sırasına göre ve herhangi bir DOM yapısı veya sayfa oluşturma işlemi gerçekleşmeden önce eklenen CSS dosya yollarından oluşan bir dizi.
"js"- Dizi,- İsteğe bağlı. CSS dosyaları yerleştirildikten sonra bu dizide göründükleri sırayla yerleştirilen JavaScript dosya yolları dizisi. Dizideki her dize, uzantının kök dizinindeki bir kaynağın göreli yolu olmalıdır. Baştaki eğik çizgiler ('/') otomatik olarak kırpılır.
URL'leri eşleştirme
Yalnızca "matches" özelliği zorunludur. Ardından, kodun hangi URL'lere yerleştirileceğini özelleştirmek için "exclude_matches", "include_globs" ve "exclude_globs" kullanabilirsiniz. "matches" anahtarı bir uyarı tetikler.
"matches"- Dizi- Zorunlu. İçerik komut dosyalarının hangi URL kalıplarına yerleştirileceğini belirtir. Söz dizimi için Eşleşme Kalıpları sayfasına göz atı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ı sayfasına göz atın.
"include_globs"- Dizi- İsteğe bağlı. Yalnızca bu glob ile de eşleşen URL'leri dahil etmek için eşleşmelerden sonra uygulanır. @include Greasemonkey anahtar kelimesini taklit etmek için tasarlanmıştır.
"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. @exclude Greasemonkey anahtar kelimesini taklit etmek için tasarlanmıştır.
Glob URL'ler, "joker karakterler" * ve soru işaretleri içeren URL'lerdir. Joker karakter *, boş dize de dahil olmak üzere 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 bir sayfaya yerleştirilir:
- URL'si,
"matches"ve"include_globs"kalıplarıyla eşleşir. - 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
Çerçeveler
"all_frames" anahtarı, içerik komut dosyasının belirtilen URL'yle ilgili koşullarla eşleşen tüm çerçevelere yerleştirilip yerleştirilmeyeceğini belirtir. false olarak ayarlanırsa yalnızca en üstteki çerçeveye eklenir. about:blank çerçevesine yerleştirmek için "match_about_blank" ile birlikte kullanılabilir.
data:, blob: ve filesystem: gibi diğer çerçevelere eklemek için "match_origin_as_fallback" değerini true olarak ayarlayın. Ayrıntılar için İlgili çerçevelere ekle bölümüne bakın.
"all_frames"Boole- İsteğe bağlı. Varsayılan olarak
falsedeğerine ayarlanır. Bu, yalnızca en üstteki çerçevenin eşleştirildiği anlamına gelir. Doğru değerine ayarlanırsa sekmedeki en üst çerçeve olmasa bile tüm çerçevelere eklenir. Her çerçeve, URL'yle ilgili koşullar açısından bağımsız olarak kontrol edilir. URL'yle ilgili koşullar karşılanmazsa alt çerçevelere ekleme yapılmaz. "match_about_blank"- Boole- İsteğe bağlı. Varsayılan değer
false'dir. Komut dosyasının, üst URL'nin"matches"içinde belirtilen kalıplardan biriyle eşleştiği birabout:blankçerçevesine yerleştirilip yerleştirilmeyeceği. "match_origin_as_fallback"- Boole- İsteğe bağlı. Varsayılan değer
false'dir. Komut dosyasının, eşleşen bir kaynak tarafından oluşturulan ancak URL'si veya kaynağı kalıpla doğrudan eşleşmeyebilen çerçevelere eklenip eklenmeyeceği. Bunlar arasındaabout:,data:,blob:vefilesystem:gibi farklı şemalara sahip çerçeveler yer alır.
Çalışma zamanı ve yürütme ortamı
Varsayılan olarak, içerik komut dosyaları, doküman ve tüm kaynaklar yüklendikten sonra eklenir ve sayfa veya diğer uzantılar tarafından erişilemeyen özel, izole bir yürütme ortamında bulunur. Bu varsayılanları aşağıdaki anahtarlarda değiştirebilirsiniz:
"run_at"-document_start|document_end|document_idle- İsteğe bağlı. Komut dosyasının sayfaya ne zaman ekleneceğ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 seçenektir.
"world"-ISOLATED|MAIN- İsteğe bağlı. Komut dosyasının 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ı seçmek, komut dosyasının yürütme ortamını ana sayfanın JavaScript'iyle paylaşacağı anlamına gelir. Daha fazla bilgi edinmek için Yalıtılmış dünyalarda çalışma başlıklı makaleyi inceleyin.
Örnek
Manifest'e içerik komut dosyası ekleyen bir uzantı oluşturmak için Her sayfada çalıştır eğitimine bakın.