Description
L'espace de noms chrome.events contient des types courants utilisés par les API qui envoient des événements pour vous avertir lorsqu'un événement intéressant se produit.
Un Event est un objet qui vous permet d'être averti lorsqu'un événement intéressant se produit. Voici un
Exemple d'utilisation de l'événement chrome.alarms.onAlarm pour être averti à la fin d'une alarme:
chrome.alarms.onAlarm.addListener(function(alarm) {
  appendToLog('alarms.onAlarm --'
              + ' name: '          + alarm.name
              + ' scheduledTime: ' + alarm.scheduledTime);
});
Comme le montre l'exemple, vous vous inscrivez aux notifications à l'aide de addListener(). L'argument de
addListener() est toujours une fonction que vous définissez pour gérer l'événement, mais les paramètres de la
dépendent de l'événement que vous gérez. Consultez la documentation de alarms.onAlarm.
vous pouvez voir que la fonction comporte un seul paramètre: un objet alarms.Alarm dont les détails
sur l'alarme écoulée.
Exemples d'API utilisant des événements: alarms, i18n, identity, runtime. La plupart des chromes les API.
Gestionnaires d'événements déclaratifs
Les gestionnaires d'événements déclaratifs permettent de définir des règles constituées de conditions déclaratives. et des actions. Les conditions sont évaluées dans le navigateur plutôt que dans le moteur JavaScript, qui réduit les latences aller-retour et permet une efficacité très élevée.
Les gestionnaires d'événements déclaratifs sont utilisés, par exemple, dans l'API Declarative Web Request et API Declarative Content : Cette page décrit les concepts sous-jacents de tous les événements déclaratifs gestionnaires.
Règles
La règle la plus simple est constituée d'une ou de plusieurs conditions et d'une ou plusieurs actions:
var rule = {
  conditions: [ /* my conditions */ ],
  actions: [ /* my actions */ ]
};
Si l'une des conditions est remplie, toutes les actions sont exécutées.
En plus des conditions et des actions, vous pouvez attribuer un identifiant à chaque règle, ce qui simplifie l'annulation de l'enregistrement des règles précédemment enregistrées, ainsi qu'une priorité permettant de définir des priorités entre les règles. Les priorités ne sont prises en compte que si les règles sont en conflit ou doivent être exécutées dans un commande. Les actions sont exécutées dans l'ordre décroissant de la priorité de leurs règles.
var rule = {
  id: "my rule",  // optional, will be generated if not set.
  priority: 100,  // optional, defaults to 100.
  conditions: [ /* my conditions */ ],
  actions: [ /* my actions */ ]
};
Objets "Événement"
Les objets "Événement" peuvent être compatibles avec les règles. Ces objets d'événement n'appellent pas de fonction de rappel lorsque
événements se produisent, mais vérifiez si une règle enregistrée a au moins une condition remplie et exécutez
les actions associées à cette règle. Les objets d'événement qui prennent en charge l'API déclarative disposent de trois
méthodes pertinentes: events.Event.addRules, events.Event.removeRules et
events.Event.getRules
Ajouter des règles
Pour ajouter des règles, appelez la fonction addRules() de l'objet événement. Il prend un tableau d'instances de règle
comme premier paramètre et une fonction de rappel appelée à la fin.
var rule_list = [rule1, rule2, ...];
function addRules(rule_list, function callback(details) {...});
Si les règles ont bien été insérées, le paramètre details contient un tableau de règles insérées.
apparaissent dans le même ordre que dans l'élément rule_list transmis, où les paramètres facultatifs id et
priority ont été renseignés avec les valeurs générées. Si une règle n'est pas valide, par exemple parce qu'elle contient
une condition ou une action non valide, aucune règle n'est ajoutée et la variable runtime.lastError
est défini lorsque la fonction de rappel est appelée. Chaque règle dans rule_list doit contenir un seul
qui n'est actuellement pas utilisé par une autre règle ou un identifiant vide.
Supprimer des règles
Pour supprimer des règles, appelez la fonction removeRules(). Elle accepte un tableau facultatif d'identifiants de règles
comme premier paramètre et une fonction de rappel en tant que deuxième paramètre.
var rule_ids = ["id1", "id2", ...];
function removeRules(rule_ids, function callback() {...});
Si rule_ids est un tableau d'identifiants, toutes les règles ayant des identifiants listés dans le tableau sont
supprimés. Si rule_ids répertorie un identifiant, cet identifiant est ignoré sans notification. Si
rule_ids est défini sur undefined. Toutes les règles enregistrées de cette extension sont supprimées. callback()
est appelée lorsque les règles ont été supprimées.
Récupérer des règles
Pour récupérer la liste des règles actuellement enregistrées, appelez la fonction getRules(). Il accepte un
tableau facultatif d'identifiants de règles avec la même sémantique que removeRules et une fonction de rappel.
var rule_ids = ["id1", "id2", ...];
function getRules(rule_ids, function callback(details) {...});
Le paramètre details transmis à la fonction callback() fait référence à un tableau de règles comprenant
des paramètres facultatifs renseignés.
Performances
Pour obtenir des performances optimales, tenez compte des consignes suivantes.
Enregistrez et annulez l'enregistrement de règles de manière groupée. Après chaque inscription ou désinscription, Chrome doit mettre à jour les structures de données internes. Cette mise à jour est une opération coûteuse.
Au lieu de :
var rule1 = {...};
var rule2 = {...};
chrome.declarativeWebRequest.onRequest.addRules([rule1]);
chrome.declarativeWebRequest.onRequest.addRules([rule2]);
préférez:
var rule1 = {...};
var rule2 = {...};
chrome.declarativeWebRequest.onRequest.addRules([rule1, rule2]);
Privilégiez la correspondance de sous-chaîne aux expressions régulières dans un élément events.UrlFilter. La correspondance basée sur des sous-chaînes est extrêmement rapide.
Au lieu de :
var match = new chrome.declarativeWebRequest.RequestMatcher({
    url: {urlMatches: "example.com/[^?]*foo" } });
préférez:
var match = new chrome.declarativeWebRequest.RequestMatcher({
    url: {hostSuffix: "example.com", pathContains: "foo"} });
Si plusieurs règles partagent les mêmes actions, fusionnez-les pour n'en faire qu'une seule. Les règles déclenchent leurs actions dès qu'une condition est remplie. Cela permet d'accélérer le et réduit la consommation de mémoire pour les ensembles d'actions en double.
Au lieu de :
var condition1 = new chrome.declarativeWebRequest.RequestMatcher({
    url: { hostSuffix: 'example.com' } });
var condition2 = new chrome.declarativeWebRequest.RequestMatcher({
    url: { hostSuffix: 'foobar.com' } });
var rule1 = { conditions: [condition1],
              actions: [new chrome.declarativeWebRequest.CancelRequest()]};
var rule2 = { conditions: [condition2],
              actions: [new chrome.declarativeWebRequest.CancelRequest()]};
chrome.declarativeWebRequest.onRequest.addRules([rule1, rule2]);
préférez:
  var rule = { conditions: [condition1, condition2],
                actions: [new chrome.declarativeWebRequest.CancelRequest()]};
  chrome.declarativeWebRequest.onRequest.addRules([rule]);
Événements filtrés
Les événements filtrés sont un mécanisme qui permet aux écouteurs de spécifier un sous-ensemble d'événements qu'ils qui vous intéressent. Un écouteur qui utilise un filtre ne sera pas appelé pour les événements qui ne transmettent pas la valeur ce qui rend le code d'écoute plus déclaratif et efficace. Les besoins d'un service worker ne pas être réveillé(e) pour gérer les événements dont il n’a pas besoin.
Les événements filtrés sont conçus pour permettre une transition entre le code de filtrage manuel et le code suivant:
chrome.webNavigation.onCommitted.addListener(function(e) {
  if (hasHostSuffix(e.url, 'google.com') ||
      hasHostSuffix(e.url, 'google.com.au')) {
    // ...
  }
});
comme ceci:
chrome.webNavigation.onCommitted.addListener(function(e) {
  // ...
}, {url: [{hostSuffix: 'google.com'},
          {hostSuffix: 'google.com.au'}]});
Les événements sont compatibles avec des filtres spécifiques pertinents pour cet événement. La liste des filtres appliqués à un événement sont répertoriés dans la documentation pour cet événement, dans la section "filtres" .
Lorsque les URL sont mises en correspondance (comme dans l'exemple ci-dessus), les filtres d'événement acceptent la même correspondance
peuvent être exprimées avec events.UrlFilter, à l'exception de la mise en correspondance de schéma et de port.
Types
Event
Objet qui permet d'ajouter et de supprimer des écouteurs pour un événement Chrome.
Propriétés
- 
    addListenervide Enregistre un rappel d'écouteur d'événements dans un événement. La fonction addListenerse présente comme suit:(callback: H) => {...} - 
    rappelH Appelé lorsqu'un événement se produit. Les paramètres de cette fonction dépendent du type d'événement. 
 
- 
    
- 
    addRulesvide Enregistre les règles permettant de gérer les événements. La fonction addRulesse présente comme suit:(rules: Rule<anyany>[], callback?: function) => {...} - 
    règlesRègle<any>[] Règles à enregistrer. Elles ne remplacent pas les règles enregistrées précédemment. 
- 
    rappelfunction facultatif Le paramètre callbackse présente comme suit:(rules: Rule<anyany>[]) => void - 
    règlesRègle<any>[] Règles qui ont été enregistrées, les paramètres facultatifs sont renseignés avec des valeurs. 
 
- 
    
 
- 
    
- 
    getRulesvide Renvoie les règles actuellement enregistrées. La fonction getRulesse présente comme suit:(ruleIdentifiers?: string[], callback: function) => {...} - 
    ruleIdentifiersstring[] facultatif Si un tableau est transmis, seules les règles avec des identifiants contenus dans ce tableau sont renvoyées. 
- 
    rappelfonction Le paramètre callbackse présente comme suit:(rules: Rule<anyany>[]) => void - 
    règlesRègle<any>[] Règles qui ont été enregistrées, les paramètres facultatifs sont renseignés avec des valeurs. 
 
- 
    
 
- 
    
- 
    hasListenervide La fonction hasListenerse présente comme suit:(callback: H) => {...} - 
    rappelH Écouteur dont l'état d'enregistrement doit être testé. 
 - 
            retoursbooléen "True" si le rappel est enregistré pour l'événement. 
 
- 
    
- 
    hasListenersvide La fonction hasListenersse présente comme suit:() => {...}- 
            retoursbooléen "True" si des écouteurs d'événements sont enregistrés pour l'événement. 
 
- 
            
- 
    removeListenervide Annule l'enregistrement d'un rappel d'écouteur d'événements dans un événement. La fonction removeListenerse présente comme suit:(callback: H) => {...} - 
    rappelH Écouteur dont l'enregistrement doit être annulé. 
 
- 
    
- 
    removeRulesvide Annule l'enregistrement des règles actuellement enregistrées. La fonction removeRulesse présente comme suit:(ruleIdentifiers?: string[], callback?: function) => {...} - 
    ruleIdentifiersstring[] facultatif Si un tableau est transmis, seules les règles dont les identifiants sont contenus dans ce tableau sont annulées. 
- 
    rappelfunction facultatif Le paramètre callbackse présente comme suit:() => void 
 
- 
    
Rule
Description d'une règle déclarative pour la gestion des événements.
Propriétés
- 
    correctivestout[] Liste des actions déclenchées si l'une des conditions est remplie. 
- 
    conditionstout[] Liste des conditions pouvant déclencher les actions. 
- 
    idchaîne facultatif Identifiant facultatif qui permet de référencer cette règle. 
- 
    prioriténuméro facultatif Priorité facultative de cette règle. La valeur par défaut est 100. 
- 
    tagsstring[] facultatif Les tags peuvent être utilisés pour annoter des règles et effectuer des opérations sur des ensembles de règles. 
UrlFilter
Filtre les URL en fonction de différents critères. Consultez la section Filtrage des événements. Tous les critères sont sensibles à la casse.
Propriétés
- 
    cidrBlocksstring[] facultatif Chrome 123 et versions ultérieuresCorrespond si la partie hôte de l'URL est une adresse IP et est contenue dans l'un des blocs CIDR spécifiés dans le tableau. 
- 
    hostContainschaîne facultatif Correspond si le nom d'hôte de l'URL contient une chaîne spécifiée. Pour vérifier si un composant de nom d'hôte possède un préfixe "foo", utilisez hostContains : ".foo". Cela correspond à "www.foobar.com" et "foo.com", car un point implicite est ajouté au début du nom d'hôte. De la même manière, hostContains peut être utilisé pour établir une correspondance avec le suffixe de composant ("foo.") et avec des composants (".foo."). La correspondance de suffixe et de correspondance exacte des derniers composants doit être effectuée séparément à l'aide de hostSuffix, car aucun point implicite n'est ajouté à la fin du nom d'hôte. 
- 
    hostEqualschaîne facultatif Correspond si le nom d'hôte de l'URL est égal à une chaîne spécifiée. 
- 
    hostPrefixchaîne facultatif Correspond si le nom d'hôte de l'URL commence par une chaîne spécifiée. 
- 
    hostSuffixchaîne facultatif Correspond si le nom d'hôte de l'URL se termine par une chaîne spécifiée. 
- 
    originAndPathMatcheschaîne facultatif Correspond si l'URL sans segment de requête ni identifiant de fragment correspond à une expression régulière spécifiée. Les numéros de port sont supprimés de l'URL s'ils correspondent au numéro de port par défaut. Les expressions régulières utilisent la syntaxe RE2. 
- 
    pathContainschaîne facultatif Correspond si le segment de chemin d'accès de l'URL contient une chaîne spécifiée. 
- 
    pathEqualschaîne facultatif Correspond si le segment de chemin d'accès de l'URL est égal à une chaîne spécifiée. 
- 
    pathPrefixchaîne facultatif Correspond si le segment de chemin d'accès de l'URL commence par une chaîne spécifiée. 
- 
    pathSuffixchaîne facultatif Correspond si le segment de chemin d'accès de l'URL se termine par une chaîne spécifiée. 
- 
    ports(number | number[])[] facultatif Correspond si le port de l'URL est contenu dans l'une des listes de ports spécifiées. Par exemple, [80, 443, [1000, 1200]]correspond à toutes les requêtes sur les ports 80 et 443, et comprises entre 1 000 et 1 200.
- 
    queryContainschaîne facultatif Correspond si le segment de requête de l'URL contient une chaîne spécifiée. 
- 
    queryEqualschaîne facultatif Correspond si le segment de requête de l'URL est égal à une chaîne spécifiée. 
- 
    queryPrefixchaîne facultatif Correspond si le segment de requête de l'URL commence par une chaîne spécifiée. 
- 
    querySuffixchaîne facultatif Correspond si le segment de requête de l'URL se termine par une chaîne spécifiée. 
- 
    schémasstring[] facultatif Correspond si le schéma de l'URL est égal à l'un des schémas spécifiés dans le tableau. 
- 
    urlContainschaîne facultatif Vérifie si l'URL (sans identifiant de fragment) contient une chaîne spécifiée. Les numéros de port sont supprimés de l'URL s'ils correspondent au numéro de port par défaut. 
- 
    urlEqualschaîne facultatif Vérifie si l'URL (sans identifiant de fragment) est égale à une chaîne spécifiée. Les numéros de port sont supprimés de l'URL s'ils correspondent au numéro de port par défaut. 
- 
    urlMatcheschaîne facultatif Correspond si l'URL (sans identifiant de fragment) correspond à une expression régulière spécifiée. Les numéros de port sont supprimés de l'URL s'ils correspondent au numéro de port par défaut. Les expressions régulières utilisent la syntaxe RE2. 
- 
    urlPrefixchaîne facultatif Correspond si l'URL (sans identifiant de fragment) commence par une chaîne spécifiée. Les numéros de port sont supprimés de l'URL s'ils correspondent au numéro de port par défaut. 
- 
    urlSuffixchaîne facultatif Correspond si l'URL (sans identifiant de fragment) se termine par une chaîne spécifiée. Les numéros de port sont supprimés de l'URL s'ils correspondent au numéro de port par défaut.