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ı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"]
    }
  ],
  ...
}
Şununla eşleşiyor:
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"]
    }
  ],
  ...
}
Şununla eşleşiyor:
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"]
    }
  ],
  ...
}
Şununla eşleşiyor:
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"]
    }
  ],
  ...
}
Şununla eşleşiyor:
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

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 bir about: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. Bunlar about:, data:, blob: ve filesystem: 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.