Manifest - içerik komut dosyaları

"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"]
    }
  ],
  ...
}
Eşleşmeler
https://www.example.com/foo/bar
https://the.example.com/foo/
Eşleşmez
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"]
    }
  ],
  ...
}
Eşleşmeler
https://www.example.com/arts/index.html
https://www.example.com/jobs/index.html
Eşleşmez
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"]
    }
  ],
  ...
}
Eşleşmeler
https://history.example.com
https://.example.com/music
Eşleşmez
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"]
    }
  ],
  ...
}
Eşleşmeler
https://www.example.com/arts/index.html
https://.example.com/jobs/index.html
Eşleşmez
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 false değ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 bir about: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ında about:, data:, blob: ve filesystem: 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.