onchange-Ereignis auf window.location.href

Lesezeit: 1 Minute

Benutzeravatar von Puchacz
Puchacz

Ich möchte eine Javascript-Funktion auslösen, wenn window.location.href Verknüpfungsänderungen. Ist es möglich?

Etwas wie das:

$(window.location.href).on('change', function(){
   doSomething();
});

  • Das Änderungsereignis wird nur bei einigen Eingabeelementen ausgelöst (textarea, select, input)

    – Brennan

    6. November 2014 um 21:08 Uhr


  • Ich vermute, er fragt das, weil er die URL spontan ändert. Ich habe diese Frage aus einem ähnlichen Grund gefunden.

    – Achse

    16. Januar 2015 um 18:14 Uhr

elzis Benutzeravatar
elzi

Du sagtest ‘etwas wie‘, angesichts des Beispielcodes, nach dem Sie wahrscheinlich suchen onbeforeunload Ereignishandler.

Von dem Mozilla-Dokumentation:

window.onbeforeunload = function(e) {
  return 'Dialog text here.';
};

  • Beachten Sie, dass einige Standortereignisse wie Hashchange oder Verlaufsmanipulation nicht erkannt werden.

    – Cregox

    14. Mai 2017 um 1:41 Uhr

Benutzeravatar von ashwin1014
ashwin1014

Das Hashchange-Ereignis tritt auf, wenn Änderungen am URL-Ankerteil vorgenommen wurden, dh nach dem #

window.addEventListener('hashchange', function() {

    alert("Hash Changed");

});

  • Dies ist eine Nur-Code-Antwort. Nur-Code-Antworten können gültig sein, werden aber automatisch als von geringer Qualität gekennzeichnet. Bitte fügen Sie eine kurze Erklärung hinzu, warum dieser Code funktioniert oder was der Fehler war. -Aus Bewertung

    – Erik A

    12. Oktober 2017 um 10:09 Uhr

Es gibt kein integriertes Ereignis, das bei allen URL-Änderungen ausgelöst wird. mal sehen warum:

window.addEventListener('hashchange',listener)

  • löst nur aus, wenn sich der Hash (#) in der URL ändert.

window.addEventListener('popstate', listener);

  • wird nur ausgelöst, wenn der Benutzer auf die Schaltfläche “Zurück” klickt und nicht auf pushState() oder replaceState() Veranstaltung. Nutzlos für SPA Websites.

window.onbeforeunload()

  • wird nicht funktionieren SPA Websites und auf Hashchange.

Also, gibt es einen Weg?
Ja, verwenden Mutationsbeobachter:

let previousUrl = "";

const observer = new MutationObserver(() => {
  if (window.location.href !== previousUrl) {
    console.log(`URL changed from ${previousUrl} to ${window.location.href}`);
    previousUrl = window.location.href;
    // do your thing
  }
});
const config = { subtree: true, childList: true };

// start observing change
observer.observe(document, config);

1404000cookie-checkonchange-Ereignis auf window.location.href

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy