browser.webNavigation

Beschrijving

Gebruik de chrome.webNavigation API om meldingen te ontvangen over de status van lopende navigatieverzoeken.

Toestemmingen

webNavigation

Voor alle browser.webNavigation methoden en -gebeurtenissen is het vereist dat u de "webNavigation" -machtiging in het extensiemanifest declareert. Bijvoorbeeld:

{
  "name": "My extension",
  ...
  "permissions": [
    "webNavigation"
  ],
  ...
}

Concepten en gebruik

Volgorde van gebeurtenissen

Bij een succesvol voltooide navigatie worden de volgende gebeurtenissen in de aangegeven volgorde geactiveerd:

onBeforeNavigate -> onCommitted -> [onDOMContentLoaded] -> onCompleted

Elke fout die tijdens het proces optreedt, resulteert in een onErrorOccurred -gebeurtenis. Voor een specifieke navigatie worden er na onErrorOccurred geen verdere gebeurtenissen meer geactiveerd.

Als een navigerend frame subframes bevat, wordt onCommitted ervan geactiveerd vóór onBeforeNavigate van elk van de onderliggende frames; terwijl onCompleted wordt geactiveerd ná onCompleted van alle onderliggende frames.

Als het referentiefragment van een frame wordt gewijzigd, wordt een onReferenceFragmentUpdated -gebeurtenis geactiveerd. Deze gebeurtenis kan op elk moment na onDOMContentLoaded worden geactiveerd, zelfs na onCompleted .

Als de geschiedenis-API wordt gebruikt om de status van een frame te wijzigen (bijvoorbeeld met history.pushState() , wordt een onHistoryStateUpdated -gebeurtenis geactiveerd. Deze gebeurtenis kan op elk moment na onDOMContentLoaded worden geactiveerd.

Als een pagina via de navigatie vanuit de back-forward cache wordt geladen, wordt de onDOMContentLoaded -gebeurtenis niet geactiveerd. Deze gebeurtenis wordt niet geactiveerd omdat de inhoud al volledig geladen was toen de pagina voor het eerst werd bezocht.

Als een navigatie is geactiveerd via Chrome Instant of Instant Pages , wordt een volledig geladen pagina in het huidige tabblad geplaatst. In dat geval wordt een onTabReplaced gebeurtenis geactiveerd.

Relatie tot webRequest-gebeurtenissen

Er is geen vaste volgorde tussen gebeurtenissen van de webRequest API en gebeurtenissen van de webNavigation API. Het is mogelijk dat webRequest-gebeurtenissen nog steeds worden ontvangen voor frames die al een nieuwe navigatie zijn gestart, of dat een navigatie pas verdergaat nadat de netwerkbronnen volledig zijn geladen.

Over het algemeen zijn de webNavigation-gebeurtenissen nauw verbonden met de navigatiestatus die in de gebruikersinterface wordt weergegeven, terwijl de webRequest-gebeurtenissen overeenkomen met de status van de netwerkstack, die doorgaans niet zichtbaar is voor de gebruiker.

Tab-ID's

Niet alle navigatietabs komen overeen met daadwerkelijke tabs in de Chrome-gebruikersinterface, bijvoorbeeld een tab die vooraf wordt weergegeven. Dergelijke tabs zijn niet toegankelijk via de tabs-API en u kunt er ook geen informatie over opvragen door webNavigation.getFrame() of webNavigation.getAllFrames() aan te roepen. Zodra een dergelijke tab wordt ingevoegd, wordt een onTabReplaced gebeurtenis geactiveerd en worden ze toegankelijk via deze API's.

Tijdstempels

It's important to note that some technical oddities in the OS's handling of distinct Chrome processes can cause the clock to be skewed between the browser itself and extension processes. That means that the timeStamp property of the WebNavigation event timeStamp property is only guaranteed to be internally consistent. Comparing one event to another event will give you the correct offset between them, but comparing them to the current time inside the extension (using (new Date()).getTime() , for instance) might give unexpected results.

Frame-ID's

Frames binnen een tabblad kunnen worden geïdentificeerd aan de hand van een frame-ID. De frame-ID van het hoofdframe is altijd 0, de ID van subframes is een positief getal. Zodra een document in een frame is opgebouwd, blijft de frame-ID constant gedurende de levensduur van het document. Vanaf Chrome 49 blijft deze ID ook constant gedurende de levensduur van het frame (ook bij meerdere navigaties).

Due to the multi-process nature of Chrome, a tab might use different processes to render the source and destination of a web page. Therefore, if a navigation takes place in a new process, you might receive events both from the new and the old page until the new navigation is committed (ie the onCommitted event is sent for the new main frame). In other words, it is possible to have more than one pending sequence of webNavigation events with the same frameId . The sequences can be distinguished by the processId key.

Houd er ook rekening mee dat het proces tijdens een voorlopige laadprocedure meerdere keren kan worden gewijzigd. Dit gebeurt wanneer de laadprocedure wordt omgeleid naar een andere site. In dat geval ontvangt u herhaaldelijk onBeforeNavigate en onErrorOccurred -gebeurtenissen, totdat u de uiteindelijke onCommitted gebeurtenis ontvangt.

Another concept that is problematic with extensions is the lifecycle of the frame. A frame hosts a document (which is associated with a committed URL). The document can change (say by navigating) but the frameId won't, and so it is difficult to associate that something happened in a specific document with just frameIds . We are introducing a concept of a documentId which is a unique identifier per document. If a frame is navigated and opens a new document the identifier will change. This field is useful for determining when pages change their lifecycle state (between prerender/active/cached) because it remains the same.

Overgangstypen en -kwalificaties

De onCommitted gebeurtenis webNavigation heeft een ` transitionType en een ` transitionQualifiers eigenschap. Het overgangstype is hetzelfde als dat in de `history` API wordt gebruikt om te beschrijven hoe de browser naar deze specifieke URL is genavigeerd. Daarnaast kunnen er verschillende overgangskwalificaties worden geretourneerd die de navigatie verder definiëren.

De volgende overgangsvoorwaarden zijn van toepassing:

Overgangskwalificatie Beschrijving
"client_redirect" Tijdens de navigatie hebben zich een of meer omleidingen voorgedaan als gevolg van JavaScript of meta refresh-tags op de pagina.
"server_redirect" Tijdens de navigatie hebben zich een of meer omleidingen voorgedaan als gevolg van HTTP-headers die door de server zijn verzonden.
"vooruit_achteruit" De gebruiker heeft de knop 'Vooruit' of 'Terug' gebruikt om de navigatie te starten.
"van_adresbalk" De gebruiker startte de navigatie vanuit de adresbalk (ook wel Omnibox genoemd).

Voorbeelden

Om deze API uit te proberen, installeer je het webNavigation API-voorbeeld uit de chrome-extension-samples- repository.

Soorten

TransitionQualifier

Chrome 44+

Enum

"client_redirect"

"server_redirect"

"vooruit_achteruit"

"van_adresbalk"

TransitionType

Chrome 44+

Oorzaak van de navigatie. Dezelfde overgangstypen als gedefinieerd in de history API worden gebruikt. Dit zijn dezelfde overgangstypen als gedefinieerd in de history API , behalve dat "start_page" in plaats van "auto_toplevel" wordt gebruikt (voor achterwaartse compatibiliteit).

Enum

"link"

"getypt"

"auto_bookmark"

"auto_subframe"

"manual_subframe"

"gegenereerd"

"start_page"

"formulier_verzenden"

"herladen"

"trefwoord"

"trefwoord_gegenereerd"

Methoden

getAllFrames()

chrome.webNavigation.getAllFrames(
  details: object,
)
: Promise<object[] | undefined>

Haalt informatie op over alle frames van een bepaald tabblad.

Parameters

  • details

    voorwerp

    Informatie over het tabblad waar alle frames vandaan gehaald kunnen worden.

    • tabId

      nummer

      De ID van het tabblad.

Retourneert

  • Promise<object[] | undefined>

    Chrome 93+

getFrame()

chrome.webNavigation.getFrame(
  details: object,
)
: Promise<object | undefined>

Haalt informatie op over het betreffende frame. Een frame verwijst naar een <iframe> of een <frame> van een webpagina en wordt geïdentificeerd door een tab-ID en een frame-ID.

Parameters

  • details

    voorwerp

    Informatie over het frame waarover gegevens moeten worden opgehaald.

    • documentId

      string optioneel

      Chrome 106+

      De UUID van het document. Indien de frameId en/of tabId worden opgegeven, worden deze gecontroleerd om te zien of ze overeenkomen met het document dat is gevonden op basis van de opgegeven document-ID.

    • frameId

      nummer optioneel

      De ID van het frame in het betreffende tabblad.

    • proces-ID

      nummer optioneel

      Niet meer bruikbaar sinds Chrome 49.

      Frames worden nu uniek geïdentificeerd door hun tab-ID en frame-ID; de proces-ID is niet langer nodig en wordt daarom genegeerd.

      De ID van het proces dat de renderer voor dit tabblad uitvoert.

    • tabId

      nummer optioneel

      De ID van het tabblad waarin het frame zich bevindt.

Retourneert

  • Promise<object | undefined>

    Chrome 93+

Evenementen

onBeforeNavigate

chrome.webNavigation.onBeforeNavigate.addListener(
  callback: function,
  filters?: object,
)

Wordt geactiveerd wanneer er een navigatie op het punt staat plaats te vinden.

Parameters

  • terugbelverzoek

    functie

    De callback parameter ziet er als volgt uit:

    (details: object) => void

    • details

      voorwerp

      • documentLevenscyclus
        Chrome 106+

        De levenscyclus waarin het document zich bevindt.

      • frameId

        nummer

        0 geeft aan dat de navigatie plaatsvindt in het venster met de tabinhoud; een positieve waarde geeft aan dat de navigatie plaatsvindt in een subframe. Frame-ID's zijn uniek voor een bepaalde tab en een bepaald proces.

      • Chrome 106+

        Het type frame waarin de navigatie plaatsvond.

      • parentDocumentId

        string optioneel

        Chrome 106+

        De UUID van het bovenliggende document waartoe dit frame behoort. Deze wordt niet ingesteld als er geen bovenliggend document is.

      • parentFrameId

        nummer

        De ID van het bovenliggende frame, of -1 als dit het hoofdframe is.

      • proces-ID

        nummer

        Niet meer beschikbaar sinds Chrome 50.

        De processId wordt niet langer ingesteld voor deze gebeurtenis, omdat het proces dat het resulterende document zal genereren pas bekend is bij onCommit.

        De waarde van -1.

      • tabId

        nummer

        De ID van het tabblad waarin de navigatie zal plaatsvinden.

      • tijdstempel

        nummer

        Het tijdstip waarop de browser op het punt stond de navigatie te starten, in milliseconden sinds de epoch.

      • URL

        snaar

  • filters

    object optioneel

    • Voorwaarden waaraan de URL waarnaar wordt genavigeerd moet voldoen. De velden 'schemes' en 'ports' van UrlFilter worden voor deze gebeurtenis genegeerd.

onCommitted

chrome.webNavigation.onCommitted.addListener(
  callback: function,
  filters?: object,
)

Deze gebeurtenis wordt geactiveerd wanneer een navigatie is voltooid. Het document (en de bronnen waarnaar het verwijst, zoals afbeeldingen en subframes) worden mogelijk nog gedownload, maar ten minste een deel van het document is al van de server ontvangen en de browser heeft besloten over te schakelen naar het nieuwe document.

Parameters

  • terugbelverzoek

    functie

    De callback parameter ziet er als volgt uit:

    (details: object) => void

    • details

      voorwerp

      • documentId

        snaar

        Chrome 106+

        De UUID van het geladen document.

      • documentLevenscyclus
        Chrome 106+

        De levenscyclus waarin het document zich bevindt.

      • frameId

        nummer

        0 geeft aan dat de navigatie plaatsvindt in het venster met de tabinhoud; een positieve waarde geeft aan dat de navigatie plaatsvindt in een subvenster. De venster-ID's zijn uniek binnen een tabblad.

      • Chrome 106+

        Het type frame waarin de navigatie plaatsvond.

      • parentDocumentId

        string optioneel

        Chrome 106+

        De UUID van het bovenliggende document waartoe dit frame behoort. Deze wordt niet ingesteld als er geen bovenliggend document is.

      • parentFrameId

        nummer

        Chrome 74+

        De ID van het bovenliggende frame, of -1 als dit het hoofdframe is.

      • proces-ID

        nummer

        De ID van het proces dat de renderer voor dit frame uitvoert.

      • tabId

        nummer

        De ID van het tabblad waarin de navigatie plaatsvindt.

      • tijdstempel

        nummer

        Het tijdstip waarop de navigatie werd voltooid, in milliseconden sinds het beginpunt.

      • overgangskwalificaties

        Een lijst met overgangscriteria.

      • overgangstype

        Oorzaak van de navigatie.

      • URL

        snaar

  • filters

    object optioneel

    • Voorwaarden waaraan de URL waarnaar wordt genavigeerd moet voldoen. De velden 'schemes' en 'ports' van UrlFilter worden voor deze gebeurtenis genegeerd.

onCompleted

chrome.webNavigation.onCompleted.addListener(
  callback: function,
  filters?: object,
)

Wordt geactiveerd wanneer een document, inclusief de bronnen waarnaar het verwijst, volledig is geladen en geïnitialiseerd.

Parameters

  • terugbelverzoek

    functie

    De callback parameter ziet er als volgt uit:

    (details: object) => void

    • details

      voorwerp

      • documentId

        snaar

        Chrome 106+

        De UUID van het geladen document.

      • documentLevenscyclus
        Chrome 106+

        De levenscyclus waarin het document zich bevindt.

      • frameId

        nummer

        0 geeft aan dat de navigatie plaatsvindt in het venster met de tabinhoud; een positieve waarde geeft aan dat de navigatie plaatsvindt in een subvenster. De venster-ID's zijn uniek binnen een tabblad.

      • Chrome 106+

        Het type frame waarin de navigatie plaatsvond.

      • parentDocumentId

        string optioneel

        Chrome 106+

        De UUID van het bovenliggende document waartoe dit frame behoort. Deze wordt niet ingesteld als er geen bovenliggend document is.

      • parentFrameId

        nummer

        Chrome 74+

        De ID van het bovenliggende frame, of -1 als dit het hoofdframe is.

      • proces-ID

        nummer

        De ID van het proces dat de renderer voor dit frame uitvoert.

      • tabId

        nummer

        De ID van het tabblad waarin de navigatie plaatsvindt.

      • tijdstempel

        nummer

        Het tijdstip waarop het document volledig geladen was, in milliseconden sinds de epoch.

      • URL

        snaar

  • filters

    object optioneel

    • Voorwaarden waaraan de URL waarnaar wordt genavigeerd moet voldoen. De velden 'schemes' en 'ports' van UrlFilter worden voor deze gebeurtenis genegeerd.

onCreatedNavigationTarget

chrome.webNavigation.onCreatedNavigationTarget.addListener(
  callback: function,
  filters?: object,
)

Deze gebeurtenis wordt geactiveerd wanneer een nieuw venster, of een nieuw tabblad in een bestaand venster, wordt aangemaakt om een ​​navigatie-element te hosten.

Parameters

  • terugbelverzoek

    functie

    De callback parameter ziet er als volgt uit:

    (details: object) => void

    • details

      voorwerp

      • bronFrameId

        nummer

        De ID van het frame met sourceTabId waarin de navigatie wordt geactiveerd. 0 geeft het hoofdframe aan.

      • bronProces-ID

        nummer

        De ID van het proces dat de renderer voor het bronframe uitvoert.

      • bronTabId

        nummer

        De ID van het tabblad waarin de navigatie wordt geactiveerd.

      • tabId

        nummer

        De ID van het tabblad waarin de URL is geopend.

      • tijdstempel

        nummer

        Het tijdstip waarop de browser op het punt stond een nieuwe weergave te creëren, in milliseconden sinds de epoch.

      • URL

        snaar

        De URL moet in een nieuw venster worden geopend.

  • filters

    object optioneel

    • Voorwaarden waaraan de URL waarnaar wordt genavigeerd moet voldoen. De velden 'schemes' en 'ports' van UrlFilter worden voor deze gebeurtenis genegeerd.

onDOMContentLoaded

chrome.webNavigation.onDOMContentLoaded.addListener(
  callback: function,
  filters?: object,
)

Deze gebeurtenis wordt geactiveerd wanneer de DOM van de pagina volledig is opgebouwd, maar de bronnen waarnaar wordt verwezen mogelijk nog niet volledig zijn geladen.

Parameters

  • terugbelverzoek

    functie

    De callback parameter ziet er als volgt uit:

    (details: object) => void

    • details

      voorwerp

      • documentId

        snaar

        Chrome 106+

        De UUID van het geladen document.

      • documentLevenscyclus
        Chrome 106+

        De levenscyclus waarin het document zich bevindt.

      • frameId

        nummer

        0 geeft aan dat de navigatie plaatsvindt in het venster met de tabinhoud; een positieve waarde geeft aan dat de navigatie plaatsvindt in een subvenster. De venster-ID's zijn uniek binnen een tabblad.

      • Chrome 106+

        Het type frame waarin de navigatie plaatsvond.

      • parentDocumentId

        string optioneel

        Chrome 106+

        De UUID van het bovenliggende document waartoe dit frame behoort. Deze wordt niet ingesteld als er geen bovenliggend document is.

      • parentFrameId

        nummer

        Chrome 74+

        De ID van het bovenliggende frame, of -1 als dit het hoofdframe is.

      • proces-ID

        nummer

        De ID van het proces dat de renderer voor dit frame uitvoert.

      • tabId

        nummer

        De ID van het tabblad waarin de navigatie plaatsvindt.

      • tijdstempel

        nummer

        Het tijdstip waarop de DOM van de pagina volledig is opgebouwd, in milliseconden sinds de epoch.

      • URL

        snaar

  • filters

    object optioneel

    • Voorwaarden waaraan de URL waarnaar wordt genavigeerd moet voldoen. De velden 'schemes' en 'ports' van UrlFilter worden voor deze gebeurtenis genegeerd.

onErrorOccurred

chrome.webNavigation.onErrorOccurred.addListener(
  callback: function,
  filters?: object,
)

Deze gebeurtenis wordt geactiveerd wanneer er een fout optreedt en de navigatie wordt afgebroken. Dit kan gebeuren als er een netwerkfout is opgetreden of als de gebruiker de navigatie heeft afgebroken.

Parameters

  • terugbelverzoek

    functie

    De callback parameter ziet er als volgt uit:

    (details: object) => void

    • details

      voorwerp

      • documentId

        snaar

        Chrome 106+

        De UUID van het geladen document.

      • documentLevenscyclus
        Chrome 106+

        De levenscyclus waarin het document zich bevindt.

      • fout

        snaar

        De foutbeschrijving.

      • frameId

        nummer

        0 geeft aan dat de navigatie plaatsvindt in het venster met de tabinhoud; een positieve waarde geeft aan dat de navigatie plaatsvindt in een subvenster. De venster-ID's zijn uniek binnen een tabblad.

      • Chrome 106+

        Het type frame waarin de navigatie plaatsvond.

      • parentDocumentId

        string optioneel

        Chrome 106+

        De UUID van het bovenliggende document waartoe dit frame behoort. Deze wordt niet ingesteld als er geen bovenliggend document is.

      • parentFrameId

        nummer

        Chrome 74+

        De ID van het bovenliggende frame, of -1 als dit het hoofdframe is.

      • proces-ID

        nummer

        Niet meer beschikbaar sinds Chrome 50.

        De processId is niet langer ingesteld voor deze gebeurtenis.

        De waarde van -1.

      • tabId

        nummer

        De ID van het tabblad waarin de navigatie plaatsvindt.

      • tijdstempel

        nummer

        Het tijdstip waarop de fout optrad, in milliseconden sinds het begin van het tijdsbestek.

      • URL

        snaar

  • filters

    object optioneel

    • Voorwaarden waaraan de URL waarnaar wordt genavigeerd moet voldoen. De velden 'schemes' en 'ports' van UrlFilter worden voor deze gebeurtenis genegeerd.

onHistoryStateUpdated

chrome.webNavigation.onHistoryStateUpdated.addListener(
  callback: function,
  filters?: object,
)

Deze gebeurtenis wordt geactiveerd wanneer de geschiedenis van het frame wordt bijgewerkt naar een nieuwe URL. Alle toekomstige gebeurtenissen voor dat frame zullen de bijgewerkte URL gebruiken.

Parameters

  • terugbelverzoek

    functie

    De callback parameter ziet er als volgt uit:

    (details: object) => void

    • details

      voorwerp

      • documentId

        snaar

        Chrome 106+

        De UUID van het geladen document.

      • documentLevenscyclus
        Chrome 106+

        De levenscyclus waarin het document zich bevindt.

      • frameId

        nummer

        0 geeft aan dat de navigatie plaatsvindt in het venster met de tabinhoud; een positieve waarde geeft aan dat de navigatie plaatsvindt in een subvenster. De venster-ID's zijn uniek binnen een tabblad.

      • Chrome 106+

        Het type frame waarin de navigatie plaatsvond.

      • parentDocumentId

        string optioneel

        Chrome 106+

        De UUID van het bovenliggende document waartoe dit frame behoort. Deze wordt niet ingesteld als er geen bovenliggend document is.

      • parentFrameId

        nummer

        Chrome 74+

        De ID van het bovenliggende frame, of -1 als dit het hoofdframe is.

      • proces-ID

        nummer

        De ID van het proces dat de renderer voor dit frame uitvoert.

      • tabId

        nummer

        De ID van het tabblad waarin de navigatie plaatsvindt.

      • tijdstempel

        nummer

        Het tijdstip waarop de navigatie werd voltooid, in milliseconden sinds het beginpunt.

      • overgangskwalificaties

        Een lijst met overgangscriteria.

      • overgangstype

        Oorzaak van de navigatie.

      • URL

        snaar

  • filters

    object optioneel

    • Voorwaarden waaraan de URL waarnaar wordt genavigeerd moet voldoen. De velden 'schemes' en 'ports' van UrlFilter worden voor deze gebeurtenis genegeerd.

onReferenceFragmentUpdated

chrome.webNavigation.onReferenceFragmentUpdated.addListener(
  callback: function,
  filters?: object,
)

Wordt geactiveerd wanneer het referentiefragment van een frame wordt bijgewerkt. Alle toekomstige gebeurtenissen voor dat frame zullen de bijgewerkte URL gebruiken.

Parameters

  • terugbelverzoek

    functie

    De callback parameter ziet er als volgt uit:

    (details: object) => void

    • details

      voorwerp

      • documentId

        snaar

        Chrome 106+

        De UUID van het geladen document.

      • documentLevenscyclus
        Chrome 106+

        De levenscyclus waarin het document zich bevindt.

      • frameId

        nummer

        0 geeft aan dat de navigatie plaatsvindt in het venster met de tabinhoud; een positieve waarde geeft aan dat de navigatie plaatsvindt in een subvenster. De venster-ID's zijn uniek binnen een tabblad.

      • Chrome 106+

        Het type frame waarin de navigatie plaatsvond.

      • parentDocumentId

        string optioneel

        Chrome 106+

        De UUID van het bovenliggende document waartoe dit frame behoort. Deze wordt niet ingesteld als er geen bovenliggend document is.

      • parentFrameId

        nummer

        Chrome 74+

        De ID van het bovenliggende frame, of -1 als dit het hoofdframe is.

      • proces-ID

        nummer

        De ID van het proces dat de renderer voor dit frame uitvoert.

      • tabId

        nummer

        De ID van het tabblad waarin de navigatie plaatsvindt.

      • tijdstempel

        nummer

        Het tijdstip waarop de navigatie werd voltooid, in milliseconden sinds het beginpunt.

      • overgangskwalificaties

        Een lijst met overgangscriteria.

      • overgangstype

        Oorzaak van de navigatie.

      • URL

        snaar

  • filters

    object optioneel

    • Voorwaarden waaraan de URL waarnaar wordt genavigeerd moet voldoen. De velden 'schemes' en 'ports' van UrlFilter worden voor deze gebeurtenis genegeerd.

onTabReplaced

chrome.webNavigation.onTabReplaced.addListener(
  callback: function,
)

Deze gebeurtenis wordt geactiveerd wanneer de inhoud van het tabblad wordt vervangen door een ander (meestal eerder weergegeven) tabblad.

Parameters

  • terugbelverzoek

    functie

    De callback parameter ziet er als volgt uit:

    (details: object) => void

    • details

      voorwerp

      • vervangenTabId

        nummer

        De ID van het tabblad dat is vervangen.

      • tabId

        nummer

        De ID van het tabblad dat het oude tabblad heeft vervangen.

      • tijdstempel

        nummer

        Het tijdstip waarop de vervanging plaatsvond, in milliseconden sinds het begin van het tijdperk.