Maison > interface Web > js tutoriel > Comment détecter les modifications d'URL après le symbole de hachage en JavaScript ?

Comment détecter les modifications d'URL après le symbole de hachage en JavaScript ?

Barbara Streisand
Libérer: 2024-11-12 12:54:02
original
675 Les gens l'ont consulté

How to Detect URL Changes After the Hash Symbol in JavaScript?

Détection des modifications d'URL dans JavaScript après le symbole de hachage

JavaScript offre des moyens de détecter si une URL a changé, notamment les options suivantes :

  • En cours de chargement Événement :

    • L'événement onload n'est pas déclenché lorsque l'URL change après le symbole dièse.
  • Gestionnaire d'événements pour URL :

    • Il n'existe aucun gestionnaire d'événements intégré spécifiquement pour détecter l'URL. changements.
  • Vérification de l'URL toutes les secondes :

    • Bien que vérifier constamment l'URL toutes les secondes peut fonctionner, c'est inefficace et peut entraîner des problèmes de performances.

L'utilisation l'API de navigation (pour les navigateurs modernes)

Les principaux navigateurs prennent désormais en charge l'API de navigation, qui offre un moyen plus efficace de détecter les modifications d'URL :

window.navigation.addEventListener("navigate", (event) => {
    console.log("location changed!");
});
Copier après la connexion

Événement personnalisé pour les navigateurs plus anciens

Pour les navigateurs plus anciens sans API de navigation, un écouteur d'événements personnalisé peut être créé en modifiant l'historique object :

(() => {
    let oldPushState = history.pushState;
    history.pushState = function pushState() {
        let ret = oldPushState.apply(this, arguments);
        window.dispatchEvent(new Event("pushstate"));
        window.dispatchEvent(new Event("locationchange"));
        return ret;
    };

    let oldReplaceState = history.replaceState;
    history.replaceState = function replaceState() {
        let ret = oldReplaceState.apply(this, arguments);
        window.dispatchEvent(new Event("replacestate"));
        window.dispatchEvent(new Event("locationchange"));
        return ret;
    };

    window.addEventListener("popstate", () => {
        window.dispatchEvent(new Event("locationchange"));
    });
})();
Copier après la connexion

Maintenant, vous pouvez écouter les modifications d'URL à l'aide de l'événement "locationchange" :

window.addEventListener("locationchange", function () {
    console.log("location changed!");
});
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal