refresh date: 2026-09-25 robots: noindex
Description
Utilisez l'API chrome.webNavigation pour recevoir des notifications sur l'état des requêtes de navigation en cours.
Autorisations
webNavigationFichier manifeste
Toutes les méthodes et tous les événements chrome.webNavigation nécessitent que vous déclariez l'autorisation "webNavigation" dans le fichier manifeste de l'extension. Exemple :
{
"name": "My extension",
...
"permissions": [
"webNavigation"
],
...
}
Ordre des événements
Pour une navigation réussie, les événements sont déclenchés dans l'ordre suivant :
onBeforeNavigate -> onCommitted -> [onDOMContentLoaded] -> onCompleted
Toute erreur qui se produit pendant le processus entraîne un événement onErrorOccurred. Pour une navigation spécifique, aucun autre événement n'est déclenché après onErrorOccurred.
Si un frame de navigation contient des sous-frames, son onCommitted est déclenché avant l'un des onBeforeNavigate de ses enfants, tandis que onCompleted est déclenché après tous les onCompleted de ses enfants.
Si le fragment de référence d'un frame est modifié, un événement onReferenceFragmentUpdated est déclenché. Cet événement peut se déclencher à tout moment après onDOMContentLoaded, même après onCompleted.
Si l'API History est utilisée pour modifier l'état d'un frame (par exemple, à l'aide de history.pushState()), un événement onHistoryStateUpdated est déclenché. Cet événement peut se déclencher à tout moment après onDOMContentLoaded.
Si une navigation a restauré une page à partir du cache back/forward, l'événement onDOMContentLoaded ne se déclenche pas. L'événement n'est pas déclenché, car le contenu a déjà été chargé lors de la première visite de la page.
Si une navigation a été déclenchée via Chrome Instant ou Instant Pages, une page entièrement chargée est insérée dans l'onglet actuel. Dans ce cas, un événement onTabReplaced est déclenché.
Relation avec les événements webRequest
Il n'existe pas d'ordre défini entre les événements de l'API webRequest et ceux de l'API webNavigation. Il est possible que des événements webRequest soient toujours reçus pour des frames qui ont déjà commencé une nouvelle navigation, ou qu'une navigation ne se poursuive qu'une fois que les ressources réseau sont déjà entièrement chargées.
En général, les événements webNavigation sont étroitement liés à l'état de navigation affiché dans l'interface utilisateur, tandis que les événements webRequest correspondent à l'état de la pile réseau, qui est généralement opaque pour l'utilisateur.
ID d'onglet
Tous les onglets de navigation ne correspondent pas à des onglets réels dans l'interface utilisateur de Chrome (par exemple, un onglet en cours de prérendu). Ces onglets ne sont pas accessibles via l'API Tabs, et vous ne pouvez pas demander d'informations les concernant via webNavigation.getFrame ou webNavigation.getAllFrames. Une fois qu'un tel onglet est échangé, un événement onTabReplaced est déclenché et l'onglet devient accessible via ces API.
Codes temporels
Il est important de noter que certaines particularités techniques dans la gestion des processus Chrome distincts par l'OS peuvent entraîner un décalage de l'horloge entre le navigateur lui-même et les processus d'extension. Cela signifie que la propriété timeStamp des événements de WebNavigation n'est garantie d'être cohérente qu'en interne. La comparaison d'un événement à un autre vous donnera le décalage correct entre eux, mais la comparaison avec l'heure actuelle dans l'extension (via (new Date()).getTime(), par exemple) peut donner des résultats inattendus.
ID de cadre
Les frames d'un onglet peuvent être identifiés par un ID de frame. L'ID du frame principal est toujours 0, tandis que l'ID des frames enfants est un nombre positif. Une fois qu'un document est construit dans un frame, son ID de frame reste constant pendant toute la durée de vie du document. À partir de Chrome 49, cet ID est également constant pendant toute la durée de vie du frame (sur plusieurs navigations).
En raison de la nature multiprocessus de Chrome, un onglet peut utiliser différents processus pour afficher la source et la destination d'une page Web. Par conséquent, si une navigation a lieu dans un nouveau processus, vous pouvez recevoir des événements de la nouvelle et de l'ancienne page jusqu'à ce que la nouvelle navigation soit validée (c'est-à-dire que l'événement onCommitted soit envoyé pour le nouveau frame principal). En d'autres termes, il est possible d'avoir plusieurs séquences d'événements webNavigation en attente avec le même frameId. Les séquences peuvent être distinguées par la clé processId.
Notez également que lors d'un chargement provisoire, le processus peut être changé plusieurs fois. Cela se produit lorsque la charge est redirigée vers un autre site. Dans ce cas, vous recevrez des événements onBeforeNavigate et onErrorOccurred répétés, jusqu'à ce que vous receviez l'événement onCommitted final.
Le cycle de vie du frame est un autre concept problématique avec les extensions. Un frame héberge un document (qui est associé à une URL validée). Le document peut changer (par exemple, en naviguant), mais pas l'ID de frame. Il est donc difficile d'associer un événement à un document spécifique en utilisant uniquement les ID de frame. Nous introduisons le concept de documentId, qui est un identifiant unique par document. Si un frame est parcouru et ouvre un nouveau document, l'identifiant change. Ce champ est utile pour déterminer quand les pages changent d'état de cycle de vie (entre prérendu/actif/mis en cache), car il reste le même.
Types de transition et qualificatifs
L'événement onCommitted de l'API webNavigation possède les propriétés transitionType et transitionQualifiers. Le type de transition est le même que celui utilisé dans l'API History, qui décrit comment le navigateur a accédé à cette URL spécifique. De plus, plusieurs qualificatifs de transition peuvent être renvoyés pour définir plus précisément la navigation.
Les qualificatifs de transition suivants existent :
| Qualificatif de transition | Description |
|---|---|
| "client_redirect" | Une ou plusieurs redirections causées par JavaScript ou des balises Meta d'actualisation sur la page se sont produites pendant la navigation. |
| "server_redirect" | Une ou plusieurs redirections causées par des en-têtes HTTP envoyés par le serveur ont eu lieu pendant la navigation. |
| "forward_back" | L'utilisateur a utilisé le bouton "Suivant" ou "Précédent" pour lancer la navigation. |
| "from_address_bar" | L'utilisateur a lancé la navigation depuis la barre d'adresse (omnibox). |
Exemples
Pour essayer cette API, installez l'exemple d'API webNavigation à partir du dépôt chrome-extension-samples.
Types
TransitionQualifier
Énumération
"client_redirect"
"server_redirect"
"forward_back"
"from_address_bar"
TransitionType
Cause de la navigation. Les mêmes types de transition que ceux définis dans l'API History sont utilisés. Il s'agit des mêmes types de transition que ceux définis dans l'API History, à l'exception de "start_page" au lieu de "auto_toplevel" (pour la rétrocompatibilité).
Énumération
"link"
"typed"
"auto_bookmark"
"auto_subframe"
"manual_subframe"
"generated"
"start_page"
"form_submit"
"reload"
"mot clé"
"keyword_generated"
Méthodes
getAllFrames()
chrome.webNavigation.getAllFrames(
details: object,
callback?: function,
): Promise<object[] | undefined>
Récupère des informations sur tous les cadres d'un onglet donné.
Paramètres
-
détails
objet
Informations sur l'onglet à partir duquel récupérer toutes les images.
-
tabId
nombre
ID de l'onglet.
-
-
callback
function facultatif
Le paramètre
callbackse présente comme suit :(details?: object[]) => void
-
détails
object[] facultatif
Liste des frames de l'onglet donné, ou "null" si l'ID d'onglet spécifié n'est pas valide.
-
documentId
chaîne
Chrome 106 ou version ultérieureUUID du document chargé.
-
documentLifecycleChrome 106 ou version ultérieure
Cycle de vie dans lequel se trouve le document.
-
errorOccurred
booléen
"True" si la dernière navigation dans ce frame a été interrompue par une erreur, c'est-à-dire si l'événement onErrorOccurred s'est déclenché.
-
frameId
nombre
ID du frame. La valeur 0 indique qu'il s'agit du frame principal. Une valeur positive indique l'ID d'un sous-frame.
-
frameTypeChrome 106 ou version ultérieure
Type de frame dans lequel la navigation a eu lieu.
-
parentDocumentId
chaîne facultatif
Chrome 106 ou version ultérieureUUID du document parent propriétaire de ce frame. Ce champ n'est pas défini s'il n'y a pas de parent.
-
parentFrameId
nombre
ID du frame parent, ou
-1s'il s'agit du frame principal. -
processId
nombre
ID du processus qui exécute le moteur de rendu pour ce frame.
-
url
chaîne
URL actuellement associée à ce frame.
-
-
Renvoie
-
Promise<object[] | undefined>
Chrome 93 ou version ultérieureLes promesses ne sont compatibles qu'avec Manifest V3 et les versions ultérieures. Les autres plates-formes doivent utiliser des rappels.
getFrame()
chrome.webNavigation.getFrame(
details: object,
callback?: function,
): Promise<object | undefined>
Récupère des informations sur le frame donné. Un frame fait référence à un <iframe> ou à un <frame> d'une page Web. Il est identifié par un ID d'onglet et un ID de frame.
Paramètres
-
détails
objet
Informations sur le frame pour lequel vous souhaitez obtenir des informations.
-
documentId
chaîne facultatif
Chrome 106 ou version ultérieureUUID du document. Si les paramètres frameId et/ou tabId sont fournis, ils seront validés pour correspondre au document trouvé par l'ID de document fourni.
-
frameId
number facultatif
ID du frame dans l'onglet donné.
-
processId
number facultatif
Obsolète depuis Chrome 49Les frames sont désormais identifiés de manière unique par leur ID d'onglet et leur ID de frame. L'ID de processus n'est plus nécessaire et est donc ignoré.
ID du processus qui exécute le moteur de rendu pour cet onglet.
-
tabId
number facultatif
ID de l'onglet dans lequel se trouve le frame.
-
-
callback
function facultatif
Le paramètre
callbackse présente comme suit :(details?: object) => void
-
détails
objet facultatif
Informations sur le frame demandé, ou "null" si l'ID de frame et/ou l'ID d'onglet spécifiés ne sont pas valides.
-
documentId
chaîne
Chrome 106 ou version ultérieureUUID du document chargé.
-
documentLifecycleChrome 106 ou version ultérieure
Cycle de vie dans lequel se trouve le document.
-
errorOccurred
booléen
"True" si la dernière navigation dans ce frame a été interrompue par une erreur, c'est-à-dire si l'événement onErrorOccurred s'est déclenché.
-
frameTypeChrome 106 ou version ultérieure
Type de frame dans lequel la navigation a eu lieu.
-
parentDocumentId
chaîne facultatif
Chrome 106 ou version ultérieureUUID du document parent propriétaire de ce frame. Ce champ n'est pas défini s'il n'y a pas de parent.
-
parentFrameId
nombre
ID du frame parent, ou
-1s'il s'agit du frame principal. -
url
chaîne
URL actuellement associée à ce frame, si le frame identifié par frameId a existé à un moment donné dans l'onglet donné. Le fait qu'une URL soit associée à un frameId donné ne signifie pas que le frame correspondant existe toujours.
-
-
Renvoie
-
Promise<object | undefined>
Chrome 93 ou version ultérieureLes promesses ne sont compatibles qu'avec Manifest V3 et les versions ultérieures. Les autres plates-formes doivent utiliser des rappels.
Événements
onBeforeNavigate
chrome.webNavigation.onBeforeNavigate.addListener(
callback: function,
filters?: object,
)
Déclenché lorsqu'une navigation est sur le point de se produire.
Paramètres
-
fonction
Le paramètre
callbackse présente comme suit :(details: object) => void
-
objet
-
Chrome 106 ou version ultérieure
Cycle de vie dans lequel se trouve le document.
-
nombre
La valeur 0 indique que la navigation s'effectue dans la fenêtre de contenu de l'onglet. Une valeur positive indique que la navigation s'effectue dans un sous-cadre. Les ID de frame sont uniques pour un onglet et un processus donnés.
-
Chrome 106 ou version ultérieure
Type de frame dans lequel la navigation a eu lieu.
-
chaîne facultatif
Chrome 106 ou version ultérieureUUID du document parent propriétaire de ce frame. Ce champ n'est pas défini s'il n'y a pas de parent.
-
nombre
ID du frame parent, ou
-1s'il s'agit du frame principal. -
nombre
Obsolète depuis Chrome 50Le processId n'est plus défini pour cet événement, car le processus qui affichera le document obtenu n'est pas connu avant onCommit.
La valeur de -1.
-
nombre
ID de l'onglet dans lequel la navigation va avoir lieu.
-
nombre
Heure à laquelle le navigateur était sur le point de démarrer la navigation, en millisecondes depuis l'epoch.
-
chaîne
-
-
-
objet facultatif
-
Conditions que l'URL de destination doit remplir.
-
onCommitted
chrome.webNavigation.onCommitted.addListener(
callback: function,
filters?: object,
)
Se déclenche lorsqu'une navigation est validée. Le document (et les ressources auxquelles il fait référence, comme les images et les sous-frames) est peut-être encore en cours de téléchargement, mais au moins une partie du document a été reçue du serveur et le navigateur a décidé de passer au nouveau document.
Paramètres
-
callback
fonction
Le paramètre
callbackse présente comme suit :(details: object) => void
-
détails
objet
-
documentId
chaîne
Chrome 106 ou version ultérieureUUID du document chargé.
-
documentLifecycleChrome 106 ou version ultérieure
Cycle de vie dans lequel se trouve le document.
-
frameId
nombre
La valeur 0 indique que la navigation s'effectue dans la fenêtre de contenu de l'onglet. Une valeur positive indique que la navigation s'effectue dans un sous-cadre. Les ID de frame sont uniques dans un onglet.
-
frameTypeChrome 106 ou version ultérieure
Type de frame dans lequel la navigation a eu lieu.
-
parentDocumentId
chaîne facultatif
Chrome 106 ou version ultérieureUUID du document parent propriétaire de ce frame. Ce champ n'est pas défini s'il n'y a pas de parent.
-
parentFrameId
nombre
Chrome 74 ou version ultérieureID du frame parent, ou
-1s'il s'agit du frame principal. -
processId
nombre
ID du processus qui exécute le moteur de rendu pour ce frame.
-
tabId
nombre
ID de l'onglet dans lequel la navigation se produit.
-
timeStamp
nombre
Heure à laquelle la navigation a été validée, en millisecondes depuis l'epoch.
-
transitionQualifiers
Liste des qualificatifs de transition.
-
transitionType
Cause de la navigation.
-
url
chaîne
-
-
-
filtres
objet facultatif
-
url
Conditions que l'URL de destination doit remplir.
-
onCompleted
chrome.webNavigation.onCompleted.addListener(
callback: function,
filters?: object,
)
Déclenché lorsqu'un document, y compris les ressources auxquelles il fait référence, est complètement chargé et initialisé.
Paramètres
-
callback
fonction
Le paramètre
callbackse présente comme suit :(details: object) => void
-
détails
objet
-
documentId
chaîne
Chrome 106 ou version ultérieureUUID du document chargé.
-
documentLifecycleChrome 106 ou version ultérieure
Cycle de vie dans lequel se trouve le document.
-
frameId
nombre
La valeur 0 indique que la navigation s'effectue dans la fenêtre de contenu de l'onglet. Une valeur positive indique que la navigation s'effectue dans un sous-cadre. Les ID de frame sont uniques dans un onglet.
-
frameTypeChrome 106 ou version ultérieure
Type de frame dans lequel la navigation a eu lieu.
-
parentDocumentId
chaîne facultatif
Chrome 106 ou version ultérieureUUID du document parent propriétaire de ce frame. Ce champ n'est pas défini s'il n'y a pas de parent.
-
parentFrameId
nombre
Chrome 74 ou version ultérieureID du frame parent, ou
-1s'il s'agit du frame principal. -
processId
nombre
ID du processus qui exécute le moteur de rendu pour ce frame.
-
tabId
nombre
ID de l'onglet dans lequel la navigation se produit.
-
timeStamp
nombre
Heure à laquelle le chargement du document s'est terminé, en millisecondes depuis l'epoch.
-
url
chaîne
-
-
-
filtres
objet facultatif
-
url
Conditions que l'URL de destination doit remplir.
-
onCreatedNavigationTarget
chrome.webNavigation.onCreatedNavigationTarget.addListener(
callback: function,
filters?: object,
)
Se déclenche lorsqu'une nouvelle fenêtre ou un nouvel onglet dans une fenêtre existante est créé pour héberger une navigation.
Paramètres
-
fonction
Le paramètre
callbackse présente comme suit :(details: object) => void
-
objet
-
nombre
ID du frame avec sourceTabId dans lequel la navigation est déclenchée. 0 indique le frame principal.
-
nombre
ID du processus qui exécute le moteur de rendu pour le frame source.
-
nombre
ID de l'onglet dans lequel la navigation est déclenchée.
-
nombre
ID de l'onglet dans lequel l'URL est ouverte.
-
nombre
Heure à laquelle le navigateur était sur le point de créer une vue, en millisecondes depuis l'epoch.
-
chaîne
URL à ouvrir dans la nouvelle fenêtre.
-
-
-
objet facultatif
-
Conditions que l'URL de destination doit remplir.
-
onDOMContentLoaded
chrome.webNavigation.onDOMContentLoaded.addListener(
callback: function,
filters?: object,
)
Se déclenche lorsque le DOM de la page est entièrement construit, mais que les ressources référencées n'ont peut-être pas fini de se charger.
Paramètres
-
callback
fonction
Le paramètre
callbackse présente comme suit :(details: object) => void
-
détails
objet
-
documentId
chaîne
Chrome 106 ou version ultérieureUUID du document chargé.
-
documentLifecycleChrome 106 ou version ultérieure
Cycle de vie dans lequel se trouve le document.
-
frameId
nombre
La valeur 0 indique que la navigation s'effectue dans la fenêtre de contenu de l'onglet. Une valeur positive indique que la navigation s'effectue dans un sous-cadre. Les ID de frame sont uniques dans un onglet.
-
frameTypeChrome 106 ou version ultérieure
Type de frame dans lequel la navigation a eu lieu.
-
parentDocumentId
chaîne facultatif
Chrome 106 ou version ultérieureUUID du document parent propriétaire de ce frame. Ce champ n'est pas défini s'il n'y a pas de parent.
-
parentFrameId
nombre
Chrome 74 ou version ultérieureID du frame parent, ou
-1s'il s'agit du frame principal. -
processId
nombre
ID du processus qui exécute le moteur de rendu pour ce frame.
-
tabId
nombre
ID de l'onglet dans lequel la navigation se produit.
-
timeStamp
nombre
Heure à laquelle le DOM de la page a été entièrement construit, en millisecondes depuis l'epoch.
-
url
chaîne
-
-
-
filtres
objet facultatif
-
url
Conditions que l'URL de destination doit remplir.
-
onErrorOccurred
chrome.webNavigation.onErrorOccurred.addListener(
callback: function,
filters?: object,
)
Déclenché lorsqu'une erreur se produit et que la navigation est interrompue. Cela peut se produire si une erreur réseau s'est produite ou si l'utilisateur a interrompu la navigation.
Paramètres
-
callback
fonction
Le paramètre
callbackse présente comme suit :(details: object) => void
-
détails
objet
-
documentId
chaîne
Chrome 106 ou version ultérieureUUID du document chargé.
-
documentLifecycleChrome 106 ou version ultérieure
Cycle de vie dans lequel se trouve le document.
-
erreur
chaîne
Description de l'erreur.
-
frameId
nombre
La valeur 0 indique que la navigation s'effectue dans la fenêtre de contenu de l'onglet. Une valeur positive indique que la navigation s'effectue dans un sous-cadre. Les ID de frame sont uniques dans un onglet.
-
frameTypeChrome 106 ou version ultérieure
Type de frame dans lequel la navigation a eu lieu.
-
parentDocumentId
chaîne facultatif
Chrome 106 ou version ultérieureUUID du document parent propriétaire de ce frame. Ce champ n'est pas défini s'il n'y a pas de parent.
-
parentFrameId
nombre
Chrome 74 ou version ultérieureID du frame parent, ou
-1s'il s'agit du frame principal. -
processId
nombre
Obsolète depuis Chrome 50Le processId n'est plus défini pour cet événement.
La valeur de -1.
-
tabId
nombre
ID de l'onglet dans lequel la navigation se produit.
-
timeStamp
nombre
Heure à laquelle l'erreur s'est produite, en millisecondes depuis l'epoch.
-
url
chaîne
-
-
-
filtres
objet facultatif
-
url
Conditions que l'URL de destination doit remplir.
-
onHistoryStateUpdated
chrome.webNavigation.onHistoryStateUpdated.addListener(
callback: function,
filters?: object,
)
Se déclenche lorsque l'historique du frame a été mis à jour vers une nouvelle URL. Tous les événements futurs de ce cadre utiliseront l'URL mise à jour.
Paramètres
-
callback
fonction
Le paramètre
callbackse présente comme suit :(details: object) => void
-
détails
objet
-
documentId
chaîne
Chrome 106 ou version ultérieureUUID du document chargé.
-
documentLifecycleChrome 106 ou version ultérieure
Cycle de vie dans lequel se trouve le document.
-
frameId
nombre
La valeur 0 indique que la navigation s'effectue dans la fenêtre de contenu de l'onglet. Une valeur positive indique que la navigation s'effectue dans un sous-cadre. Les ID de frame sont uniques dans un onglet.
-
frameTypeChrome 106 ou version ultérieure
Type de frame dans lequel la navigation a eu lieu.
-
parentDocumentId
chaîne facultatif
Chrome 106 ou version ultérieureUUID du document parent propriétaire de ce frame. Ce champ n'est pas défini s'il n'y a pas de parent.
-
parentFrameId
nombre
Chrome 74 ou version ultérieureID du frame parent, ou
-1s'il s'agit du frame principal. -
processId
nombre
ID du processus qui exécute le moteur de rendu pour ce frame.
-
tabId
nombre
ID de l'onglet dans lequel la navigation se produit.
-
timeStamp
nombre
Heure à laquelle la navigation a été validée, en millisecondes depuis l'epoch.
-
transitionQualifiers
Liste des qualificatifs de transition.
-
transitionType
Cause de la navigation.
-
url
chaîne
-
-
-
filtres
objet facultatif
-
url
Conditions que l'URL de destination doit remplir.
-
onReferenceFragmentUpdated
chrome.webNavigation.onReferenceFragmentUpdated.addListener(
callback: function,
filters?: object,
)
Se déclenche lorsque le fragment de référence d'un frame a été mis à jour. Tous les événements futurs de ce cadre utiliseront l'URL mise à jour.
Paramètres
-
callback
fonction
Le paramètre
callbackse présente comme suit :(details: object) => void
-
détails
objet
-
documentId
chaîne
Chrome 106 ou version ultérieureUUID du document chargé.
-
documentLifecycleChrome 106 ou version ultérieure
Cycle de vie dans lequel se trouve le document.
-
frameId
nombre
La valeur 0 indique que la navigation s'effectue dans la fenêtre de contenu de l'onglet. Une valeur positive indique que la navigation s'effectue dans un sous-cadre. Les ID de frame sont uniques dans un onglet.
-
frameTypeChrome 106 ou version ultérieure
Type de frame dans lequel la navigation a eu lieu.
-
parentDocumentId
chaîne facultatif
Chrome 106 ou version ultérieureUUID du document parent propriétaire de ce frame. Ce champ n'est pas défini s'il n'y a pas de parent.
-
parentFrameId
nombre
Chrome 74 ou version ultérieureID du frame parent, ou
-1s'il s'agit du frame principal. -
processId
nombre
ID du processus qui exécute le moteur de rendu pour ce frame.
-
tabId
nombre
ID de l'onglet dans lequel la navigation se produit.
-
timeStamp
nombre
Heure à laquelle la navigation a été validée, en millisecondes depuis l'epoch.
-
transitionQualifiers
Liste des qualificatifs de transition.
-
transitionType
Cause de la navigation.
-
url
chaîne
-
-
-
filtres
objet facultatif
-
url
Conditions que l'URL de destination doit remplir.
-
onTabReplaced
chrome.webNavigation.onTabReplaced.addListener(
callback: function,
)
Déclenché lorsque le contenu de l'onglet est remplacé par un autre onglet (généralement prérendu).
Paramètres
-
callback
fonction
Le paramètre
callbackse présente comme suit :(details: object) => void
-
détails
objet
-
replacedTabId
nombre
ID de l'onglet qui a été remplacé.
-
tabId
nombre
ID de l'onglet qui a remplacé l'ancien onglet.
-
timeStamp
nombre
Heure à laquelle le remplacement a eu lieu, en millisecondes depuis l'epoch.
-
-