Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

NavigationPrecommitController : méthode addHandler()

Disponibilité limitée

Cette fonctionnalité n'est pas Compatible car elle ne fonctionne pas dans certains des navigateurs les plus utilisés.

Vous voulez une meilleure prise en charge pour cette fonctionnalité ? Dites-nous pourquoi.

La méthode addHandler() de l'interface NavigationPrecommitController permet d'ajouter dynamiquement une fonction de rappel de gestionnaire dans le code de pré-validation, qui est ensuite exécutée après que la navigation a été validée.

Cela est utile lorsque le flux de navigation dépend d'informations qui ne sont pas connues avant que le code de pré-validation ne commence à s'exécuter. Si le gestionnaire de pré-validation et le gestionnaire (post-validation) sont indépendants, le gestionnaire peut être défini dans l'argument options.handler passé à NavigateEvent.intercept().

Syntaxe

js
addHandler(handler);

Paramètres

handler

Une fonction de rappel qui définit le comportement de gestion de la navigation post-validation ; elle retourne une promesse.

La fonction de rappel du gestionnaire est invoquée comme si elle est passée à la méthode NavigateEvent.intercept(), et s'exécute après que la propriété currentEntry a été mise à jour.

Valeur de retour

Aucune (undefined).

Exceptions

InvalidStateError DOMException

Levée si :

  • Un objet NavigateEvent d'origine n'a pas été intercepté ou a été annulé.
  • Un objet Document n'est pas entièrement actif.
SecurityError DOMException

Levée si l'attribut isTrusted de l'évènement est false.

Exemples

Pour plus d'exemples, voir NavigationPrecommitController.

Utilisation simple

Cet exemple montre une implémentation de gestionPreValidation qui récupère des données pour une page et utilise addHandler() pour ajouter différents gestionnaires en fonction du type de page (les implémentations de recupererConfig, configurerLecteurVideo() et configurerAffichageArticle() ne sont pas fournies).

js
navigation.addEventListener("navigate", (event) => {
  event.intercept({
    async gestionPreValidation(controleur) {
      const pageData = await recupererConfig();
      if (pageData.type === "video") {
        controleur.addHandler(() => configurerLecteurVideo());
      } else {
        controleur.addHandler(() => configurerAffichageArticle());
      }
    },
  });
});

Spécifications

Spécification
HTML
# dom-navigationprecommitcontroller-addhandler

Compatibilité des navigateurs

Voir aussi