browser.events

Açıklama

chrome.events ad alanı, ilginç bir şey olduğunda sizi bilgilendirmek için etkinlik gönderen API'ler tarafından kullanılan ortak türleri içerir.

Kavramlar ve kullanım

Event, ilginç bir şey olduğunda bildirim almanızı sağlayan bir nesnedir. Bir alarmın süresi dolduğunda bildirim almak için browser.alarms.onAlarm etkinliğini kullanma örneği:

browser.alarms.onAlarm.addListener((alarm) => {
  appendToLog(`alarms.onAlarm -- name: ${alarm.name}, scheduledTime: ${alarm.scheduledTime}`);
});

Örnekte gösterildiği gibi, addListener() kullanarak bildirimlere kaydolursunuz. addListener() işlevine iletilen bağımsız değişken her zaman etkinliği işlemek için tanımladığınız bir işlevdir ancak işlevin parametreleri, hangi etkinliği işlediğinize bağlıdır. alarms.onAlarm ile ilgili dokümanları incelediğinizde işlevin tek bir parametreye sahip olduğunu görürsünüz: alarms.Alarm nesnesi, geçen alarm hakkında ayrıntılar içerir.

Etkinlikleri kullanan örnek API'ler: alarms, i18n, identity, runtime. Çoğu chrome API'si bunu yapar.

Bildirime Dayalı Etkinlik İşleyiciler

Bildirimli etkinlik işleyicileri, bildirimli koşullar ve işlemlerden oluşan kuralları tanımlamak için bir yöntem sağlar. Koşullar, JavaScript motoru yerine tarayıcıda değerlendirilir. Bu sayede gidiş dönüş gecikmeleri azalır ve çok yüksek verimlilik sağlanır.

Bildirimli etkinlik işleyiciler, örneğin Declarative Content API kullanılır. Bu sayfada, tüm bildirim temelli etkinlik işleyicilerin temel kavramları açıklanmaktadır.

Kurallar

Mümkün olan en basit kural, bir veya daha fazla koşul ve bir veya daha fazla işlemden oluşur:

const rule = {
  conditions: [ /* my conditions */ ],
  actions: [ /* my actions */ ]
};

Koşullardan herhangi biri karşılanırsa tüm işlemler yürütülür.

Koşullara ve işlemlere ek olarak, her kurala bir tanımlayıcı verebilirsiniz. Bu tanımlayıcı, daha önce kaydedilmiş kuralların kaydını silmeyi kolaylaştırır. Ayrıca, kurallar arasında öncelikleri tanımlamak için bir öncelik de verebilirsiniz. Öncelikler yalnızca kurallar birbiriyle çakışıyorsa veya belirli bir sırada yürütülmesi gerekiyorsa dikkate alınır. İşlemler, kurallarının önceliğine göre azalan sırada yürütülür.

const rule = {
  id: "my rule",  // optional, will be generated if not set.
  priority: 100,  // optional, defaults to 100.
  conditions: [ /* my conditions */ ],
  actions: [ /* my actions */ ]
};

Etkinlik nesneleri

Etkinlik nesneleri kuralları destekleyebilir. Bu etkinlik nesneleri, etkinlikler gerçekleştiğinde geri çağırma işlevini çağırmaz ancak kayıtlı kurallardan herhangi birinin en az bir koşulunun karşılanıp karşılanmadığını test eder ve bu kurala ilişkin işlemleri yürütür. Bildirimli API'yi destekleyen etkinlik nesnelerinin üç alakalı yöntemi vardır: events.Event.addRules(), events.Event.removeRules() ve events.Event.getRules().

Kural ekle

Kural eklemek için etkinlik nesnesinin addRules() işlevini çağırın. İlk parametre olarak bir kural örnekleri dizisi, tamamlandığında çağrılan bir geri çağırma işlevi alır.

const rule_list = [rule1, rule2, ...];
addRules(rule_list, (details) => {...});

Kurallar başarıyla eklenirse details parametresi, eklenen kuralların bir dizisini içerir. Bu kurallar, iletilen rule_list içindekiyle aynı sırada görünür. İsteğe bağlı id ve priority parametreleri, oluşturulan değerlerle doldurulur. Geçersiz bir koşul veya işlem içerdiği için geçersiz olan bir kural varsa kuralların hiçbiri eklenmez ve geri çağırma işlevi çağrıldığında runtime.lastError değişkeni ayarlanır. rule_list içindeki her kural, başka bir kural tarafından kullanılmayan benzersiz bir tanımlayıcı veya boş bir tanımlayıcı içermelidir.

Kuralları kaldırma

Kuralları kaldırmak için removeRules() işlevini çağırın. İlk parametre olarak isteğe bağlı bir kural tanımlayıcı dizisi, ikinci parametre olarak da bir geri çağırma işlevi alır.

const rule_ids = ["id1", "id2", ...];
removeRules(rule_ids, () => {...});

rule_ids bir tanımlayıcı dizisiyse dizide listelenen tanımlayıcılara sahip tüm kurallar kaldırılır. rule_ids bilinmeyen bir tanımlayıcı listeliyorsa bu tanımlayıcı sessizce yoksayılır. rule_ids undefined ise bu uzantının kayıtlı tüm kuralları kaldırılır. Kurallar kaldırıldığında callback() işlevi çağrılır.

Kuralları alma

Kayıtlı kuralların listesini almak için getRules() işlevini çağırın. removeRules() ile aynı anlambilime sahip isteğe bağlı bir kural tanımlayıcı dizisi ve geri arama işlevi kabul eder.

const rule_ids = ["id1", "id2", ...];
getRules(rule_ids, (details) => {...});

callback() işlevine iletilen details parametresi, doldurulmuş isteğe bağlı parametreler de dahil olmak üzere bir kural dizisini ifade eder.

Performans

Maksimum performans elde etmek için aşağıdaki yönergeleri göz önünde bulundurmanız gerekir.

Kuralları toplu olarak kaydetme ve kaydını silme Her kayıt veya kaydı silme işleminden sonra Chrome'un dahili veri yapılarını güncellemesi gerekir. Bu güncelleme maliyetli bir işlemdir.

Bunu şu ifadenin yerine kullanırsınız:
const rule1 = {...};
const rule2 = {...};
browser.declarativeWebRequest.onRequest.addRules([rule1]);
browser.declarativeWebRequest.onRequest.addRules([rule2]);
Tercih
const rule1 = {...};
const rule2 = {...};
browser.declarativeWebRequest.onRequest.addRules([rule1, rule2]);

events.UrlFilter içinde normal ifadeler yerine alt dize eşleşmesini tercih edin. Alt dizeye dayalı eşleştirme son derece hızlıdır.

Bunu şu ifadenin yerine kullanırsınız:
const match = new browser.declarativeWebRequest.RequestMatcher({
  url: {urlMatches: "example.com/[^?]*foo" }
});
Tercih
const match = new browser.declarativeWebRequest.RequestMatcher({
  url: {hostSuffix: "example.com", pathContains: "foo"}
});

Aynı işlemleri paylaşan birçok kural varsa bu kuralları tek bir kuralda birleştirin. Kurallar, tek bir koşul karşılanır karşılanmaz işlemlerini tetikler. Bu, eşleşmeyi hızlandırır ve yinelenen işlem kümeleri için bellek tüketimini azaltır.

Bunu şu ifadenin yerine kullanırsınız:
const condition1 = new browser.declarativeWebRequest.RequestMatcher({
  url: { hostSuffix: 'example.com' }
});
const condition2 = new browser.declarativeWebRequest.RequestMatcher({
  url: { hostSuffix: 'foobar.com' }
});
const rule1 = { conditions: [condition1],
                actions: [new browser.declarativeWebRequest.CancelRequest()]
              };
const rule2 = { conditions: [condition2],
                actions: [new browser.declarativeWebRequest.CancelRequest()]
              };
browser.declarativeWebRequest.onRequest.addRules([rule1, rule2]);
Tercih
const condition1 = new browser.declarativeWebRequest.RequestMatcher({
  url: { hostSuffix: 'example.com' }
});
const condition2 = new browser.declarativeWebRequest.RequestMatcher({
  url: { hostSuffix: 'foobar.com' }
});
const rule = { conditions: [condition1, condition2],
              actions: [new browser.declarativeWebRequest.CancelRequest()]
             };
browser.declarativeWebRequest.onRequest.addRules([rule]);

Filtrelenmiş etkinlikler

Filtrelenmiş etkinlikler, dinleyicilerin ilgilendikleri etkinliklerin bir alt kümesini belirtmelerine olanak tanıyan bir mekanizmadır. Filtre kullanan bir dinleyici, filtreyi geçmeyen etkinlikler için çağrılmaz. Bu da dinleme kodunu daha bildirici ve verimli hale getirir. Hizmet çalışanı, ilgilenmediği etkinlikleri işlemek için uyandırılmak zorunda değildir.

Filtrelenen etkinlikler, manuel filtreleme kodundan geçişe olanak tanımak için tasarlanmıştır.

Bunu şu ifadenin yerine kullanırsınız:
browser.webNavigation.onCommitted.addListener((event) => {
  if (hasHostSuffix(event.url, 'google.com') ||
      hasHostSuffix(event.url, 'google.com.au')) {
    // ...
  }
});
Tercih
browser.webNavigation.onCommitted.addListener((event) => {
  // ...
}, {url: [{hostSuffix: 'google.com'},
          {hostSuffix: 'google.com.au'}]});

Etkinlikler, o etkinlik için anlamlı olan belirli filtreleri destekler. Bir etkinliğin desteklediği filtrelerin listesi, "filtreler" bölümünde ilgili etkinliğin dokümanlarında yer alır.

URL'ler eşleştirilirken (yukarıdaki örnekte olduğu gibi) etkinlik filtreleri, şema ve bağlantı noktası eşleştirme hariç events.UrlFilter ile ifade edilebilen URL eşleştirme özelliklerini destekler.

Türler

Event

Chrome etkinliğine işleyici eklenmesine ve kaldırılmasına olanak tanıyan bir nesne.

Özellikler

  • addListener

    geçersiz

    Bir etkinliğe etkinlik işleyici geri çağırması kaydeder.

    addListener işlevi şu şekilde görünür:

    (callback: H) => {...}

    • callback

      H

      Bir etkinlik gerçekleştiğinde çağrılır. Bu işlevin parametreleri etkinlik türüne bağlıdır.

  • addRules

    geçersiz

    Etkinlikleri işlemek için kuralları kaydeder.

    addRules işlevi şu şekilde görünür:

    (rules: Rule<anyany>[], callback?: function) => {...}

    • kurallar

      Kural<anyany>[]

      Kaydedilecek kurallar. Bu kurallar, daha önce kaydedilmiş kuralların yerini almaz.

    • callback

      işlev isteğe bağlı

      callback parametresi şu şekilde görünür:

      (rules: Rule<anyany>[]) => void

      • kurallar

        Kural<anyany>[]

        Kayıtlı kurallar, isteğe bağlı parametreler değerlerle doldurulur.

  • getRules

    geçersiz

    Şu anda kayıtlı kuralları döndürür.

    getRules işlevi şu şekilde görünür:

    (ruleIdentifiers?: string[], callback: function) => {...}

    • ruleIdentifiers

      string[] isteğe bağlı

      Bir dizi iletilirse yalnızca bu dizideki tanımlayıcıları içeren kurallar döndürülür.

    • callback

      işlev

      callback parametresi şu şekilde görünür:

      (rules: Rule<anyany>[]) => void

      • kurallar

        Kural<anyany>[]

        Kayıtlı kurallar, isteğe bağlı parametreler değerlerle doldurulur.

  • hasListener

    geçersiz

    hasListener işlevi şu şekilde görünür:

    (callback: H) => {...}

    • callback

      H

      Kayıt durumu test edilecek işleyici.

    • returns

      boole

      Geri çağırma etkinliğe kaydedilmişse doğru değerini alır.

  • hasListeners

    geçersiz

    hasListeners işlevi şu şekilde görünür:

    () => {...}

    • returns

      boole

      Etkinliğe etkinlik işleyiciler kaydedilmişse doğru değerini alır.

  • removeListener

    geçersiz

    Bir etkinlik işleyici geri çağırma işlevini bir etkinlikten kaydını siler.

    removeListener işlevi şu şekilde görünür:

    (callback: H) => {...}

    • callback

      H

      Kaydı iptal edilecek işleyici.

  • removeRules

    geçersiz

    Şu anda kayıtlı olan kuralların kaydını siler.

    removeRules işlevi şu şekilde görünür:

    (ruleIdentifiers?: string[], callback?: function) => {...}

    • ruleIdentifiers

      string[] isteğe bağlı

      Bir dizi iletilirse yalnızca bu dizide bulunan tanımlayıcılara sahip kuralların kaydı silinir.

    • callback

      işlev isteğe bağlı

      callback parametresi şu şekilde görünür:

      () => void

Rule

Etkinliklerin işlenmesi için bildirimli bir kuralın açıklaması.

Özellikler

  • işlemler

    any[]

    Koşullardan biri karşılanırsa tetiklenen işlemlerin listesi.

  • koşul

    any[]

    İşlemleri tetikleyebilecek koşulların listesi.

  • id

    dize isteğe bağlı

    Bu kurala referans verilmesini sağlayan isteğe bağlı tanımlayıcı.

  • önceliği

    number isteğe bağlı

    Bu kuralın isteğe bağlı önceliği. Varsayılan olarak 100 değerine ayarlanır.

  • Etiketler

    string[] isteğe bağlı

    Etiketler, kurallara açıklama eklemek ve kural kümelerinde işlemler gerçekleştirmek için kullanılabilir.

UrlFilter

URL'leri çeşitli ölçütlere göre filtreler. Etkinlik filtreleme bölümünü inceleyin. Tüm ölçütler büyük/küçük harfe duyarlıdır.

Özellikler

  • cidrBlocks

    string[] isteğe bağlı

    Chrome 123 veya daha yeni bir sürüm

    URL'nin ana makine kısmı bir IP adresi ise ve dizide belirtilen CIDR bloklarından herhangi birinde yer alıyorsa eşleşir.

  • hostContains

    dize isteğe bağlı

    URL'nin ana makine adı belirtilen bir dizeyi içeriyorsa eşleşir. Bir ana makine adı bileşeninin "foo" ön ekine sahip olup olmadığını test etmek için hostContains: '.foo' ifadesini kullanın. Ana makine adının başına örtülü bir nokta eklendiğinden bu, "www.foobar.com" ve "foo.com" ile eşleşir. Benzer şekilde, hostContains, bileşen sonekiyle ("foo.") eşleşmek ve bileşenlerle (".foo.") tam olarak eşleşmek için kullanılabilir. Ana makine adının sonuna örtülü nokta eklenmediğinden, son bileşenler için sonek ve tam eşleşme, hostSuffix kullanılarak ayrı ayrı yapılmalıdır.

  • hostEquals

    dize isteğe bağlı

    URL'nin ana makine adı belirtilen bir dizeye eşitse eşleşir.

  • hostPrefix

    dize isteğe bağlı

    URL'nin ana makine adı belirtilen bir dizeyle başlıyorsa eşleşir.

  • hostSuffix

    dize isteğe bağlı

    URL'nin ana makine adı belirtilen bir dizeyle bitiyorsa eşleşir.

  • originAndPathMatches

    dize isteğe bağlı

    Sorgu segmenti ve parça tanımlayıcısı olmayan URL, belirtilen normal ifadeyle eşleşirse eşleşme olur. Bağlantı noktası numaraları, varsayılan bağlantı noktası numarasıyla eşleşiyorsa URL'den kaldırılır. Normal ifadelerde RE2 söz dizimi kullanılır.

  • pathContains

    dize isteğe bağlı

    URL'nin yol segmenti belirtilen dizeyi içeriyorsa eşleşir.

  • pathEquals

    dize isteğe bağlı

    URL'nin yol segmenti belirtilen bir dizeye eşitse eşleşir.

  • pathPrefix

    dize isteğe bağlı

    URL'nin yol segmenti belirtilen bir dizeyle başlıyorsa eşleşir.

  • pathSuffix

    dize isteğe bağlı

    URL'nin yol segmenti belirtilen bir dizeyle bitiyorsa eşleşir.

  • ports

    (number | number[])[] isteğe bağlı

    URL'nin bağlantı noktası, belirtilen bağlantı noktası listelerinden herhangi birinde yer alıyorsa eşleşir. Örneğin, [80, 443, [1000, 1200]], 80 ve 443 bağlantı noktalarındaki ve 1000-1200 aralığındaki tüm isteklerle eşleşir.

  • queryContains

    dize isteğe bağlı

    URL'nin sorgu segmenti belirtilen dizeyi içeriyorsa eşleşir.

  • queryEquals

    dize isteğe bağlı

    URL'nin sorgu segmenti belirtilen bir dizeye eşitse eşleşir.

  • queryPrefix

    dize isteğe bağlı

    URL'nin sorgu segmenti belirtilen bir dizeyle başlıyorsa eşleşir.

  • querySuffix

    dize isteğe bağlı

    URL'nin sorgu segmenti belirtilen bir dizeyle bitiyorsa eşleşir.

  • şemalar

    string[] isteğe bağlı

    URL'nin şeması dizide belirtilen şemalardan herhangi birine eşitse eşleşir.

  • urlContains

    dize isteğe bağlı

    URL (parça tanımlayıcı olmadan) belirtilen bir dize içeriyorsa eşleşir. Bağlantı noktası numaraları, varsayılan bağlantı noktası numarasıyla eşleşiyorsa URL'den kaldırılır.

  • urlEquals

    dize isteğe bağlı

    URL (parça tanımlayıcı olmadan) belirtilen bir dizeye eşitse eşleşir. Bağlantı noktası numaraları, varsayılan bağlantı noktası numarasıyla eşleşiyorsa URL'den kaldırılır.

  • urlMatches

    dize isteğe bağlı

    URL (parça tanımlayıcı olmadan) belirtilen bir normal ifadeyle eşleşirse eşleşir. Bağlantı noktası numaraları, varsayılan bağlantı noktası numarasıyla eşleşiyorsa URL'den kaldırılır. Normal ifadelerde RE2 söz dizimi kullanılır.

  • urlPrefix

    dize isteğe bağlı

    URL (parça tanımlayıcısı olmadan) belirtilen bir dizeyle başlıyorsa eşleşir. Bağlantı noktası numaraları, varsayılan bağlantı noktası numarasıyla eşleşiyorsa URL'den kaldırılır.

  • urlSuffix

    dize isteğe bağlı

    URL (parça tanımlayıcı olmadan) belirtilen bir dizeyle bitiyorsa eşleşir. Bağlantı noktası numaraları, varsayılan bağlantı noktası numarasıyla eşleşiyorsa URL'den kaldırılır.