Ich exportiere ein onRouteUpdate
aus gatsby-browser.js
wie folgt:
export const onRouteUpdate = ({ location, action }) => {
if (
window.location &&
typeof window.location.href === 'string' &&
window.location.href.includes('www.example.com') // make sure we're on live site
) {
window.analytics.page();
} else {
console.log('PAGE: ', window.location.href, action, location);
}
return;
};
Dies funktioniert einwandfrei, aber wenn eine Seite Ankerlinks enthält, wird sie jedes Mal ausgelöst, wenn auf einen von ihnen geklickt wird.
Ich habe versucht, nur die page()
auf action === 'PUSH'
Routenaktualisierungen auszulösen, aber das blockiert das Ereignis bei allen anfänglichen Seitenladevorgängen.
Gibt es eine Möglichkeit, Ankerlink-Ereignisse aus diesem Tracking zu entfernen?
Hi @brandonmp Vielleicht checken Sie window.location.href
wenn #
Zeichen vorhanden ist?
@sebastienfi er sagt, dass ein Hash-Update (was passiert, wenn Sie auf einen Anker klicken) die onRouteUpdate
API nicht auslösen sollte. Was mir ziemlich vernünftig erscheint. Hash-Updates sollten nur innerhalb einer einzelnen Seite erfolgen, auf der die API nur beim Seitenwechsel ausgelöst werden soll.
@brandonmp würde es lieben, wenn ein PR Hash-Änderungen auf derselben Seite hier herausfiltert! https://github.com/gatsbyjs/gatsby/blob/84362074df2238e6794bb6a056e0163ac1c0dfdd/packages/gatsby/cache-dir/production-app.js#L112
Vielleicht die Funktion in eine andere Datei stellen und ein paar Tests hinzufügen?
Ich bin mir nicht sicher, wann, aber wir feuern nicht mehr onRouteUpdate
bei Routenänderungen ab.