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üklenen 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 konusuna 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",
   }
 ],
 ...
}

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 bir dosyanın ne zaman ekleneceğini belirtir.

"css" - Dizi
İsteğe bağlıdır. Herhangi bir DOM oluşturma veya sayfa oluşturma işlemi gerçekleşmeden önce, bu dizideki sırayla yerleştirilen bir CSS dosya yolları dizisi.
"js" - Dizi,
İsteğe bağlıdır. 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ğa giden göreli bir yol olmalıdır. Baştaki eğik çizgiler ("/") otomatik olarak kırpılır.

URL'leri eşleştir

Yalnızca "matches" özelliği gereklidir. Ardından, hangi URL'lere kod yerleştirileceğini özelleştirmek için "exclude_matches", "include_globs" ve "exclude_globs" özelliklerini kullanabilirsiniz. "matches" anahtarı uyarı tetikler.

"matches" - Dizi
Zorunlu. İçerik komut dosyalarının yerleştirileceği URL kalıplarını belirtir. Söz dizimi için Eşleşme Kalıpları'na bakın.
"exclude_matches" - Dizi
İsteğe bağlıdır. İçerik komut dosyalarının yerleştirileceği URL kalıplarını hariç tutar. Söz dizimi için Eşleşme Kalıpları'na bakın.
"include_globs" - Dizi
İsteğe bağlıdır. Yalnızca bu küreyle eşleşen URL'leri dahil etmek için eşleşmelerden sonra uygulanır. @include Greasemonkey anahtar kelimesini emüle etmek için oluşturulmuştur.
"exclude_globs" - Dizi
İsteğe bağlıdır. Bu küreyle eşleşen URL'leri hariç tutmak için eşleşmelerden sonra uygulanır. Greasemonkey anahtar kelimesini @hariç tut şeklinde kullanmak için tasarlanmıştır.

Küre URL'leri, "joker karakter" içeren URL'lerdir * ve soru işaretleri. * joker karakteri, 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 sayfaya yerleştirilir:

  • URL'si tüm "matches" ve "include_globs" kalıplarıyla eşleşiyor.
  • Ayrıca URL, "exclude_matches" veya "exclude_globs" kalıplarıyla eşleşmiyor.

Yerküre 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

Çerçeveler

"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 yerleştirilir. about:blank karesine eklemek için "match_about_blank" ile birlikte kullanılabilir.

data:, blob: ve filesystem: gibi başka karelerin içine yerleştirmek 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ıdır. Varsayılan olarak false değerine ayarlanır, yani yalnızca üst kare eşleştirilir. Doğru değerine ayarlanırsa, kare sekmenin en üstünde yer alan kare olmasa bile tüm karelere yerleştirilir. Her çerçeve, URL şartları açısından bağımsız olarak kontrol edilir. URL koşulları karşılanmazsa alt çerçevelere yerleştirilmez.
"match_about_blank"- Boole
İsteğe bağlıdır. Varsayılan olarak false değerine ayarlanır. 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ğini belirler.
"match_origin_as_fallback" - Boole
İsteğe bağlıdır. 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şmeyebilecek çerçevelere yerleştirip yerleştirmeyeceği. Bunlar arasında about:, data:, blob: ve filesystem: gibi farklı şemalara sahip kareler yer alır.

Çalışma zamanı ve yürütme ortamı

Varsayılan olarak, doküman ve tüm kaynakların yüklenmesi tamamlandığında içerik komut dosyaları yerleştirilir ve sayfanın veya diğer uzantıların erişemeyeceği özel, izole bir yürütme ortamında çalışır. Bu varsayılan ayarları aşağıdaki tuşları kullanarak değiştirebilirsiniz:

"run_at" - document_start | document_end | document_idle
İsteğe bağlıdır. 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ıdır. 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ı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 göz atın.
ziyaret edin.
'nı inceleyin.

Örnek

Manifest'e içerik komut dosyası ekleyen bir uzantı oluşturmak için Her sayfada çalıştırma eğiticisine bakın.