only update our own history entires during back navigation through view transitions (#8116)

This commit is contained in:
Martin Trapp 2023-08-17 18:18:30 +02:00 committed by GitHub
parent da6e3da1ce
commit b290f0a997
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 3 deletions

View file

@ -0,0 +1,5 @@
---
'astro': patch
---
On back navigation only animate view transitions that were animated going forward.

View file

@ -306,10 +306,11 @@ const { fallback = 'animate' } = Astro.props as Props;
return;
}
// hash change creates no state.
// History entries without state are created by the browser (e.g. for hash links)
// Our view transition entries always have state.
// Just ignore stateless entries.
// The browser will handle navigation fine without our help
if (ev.state === null) {
persistState({ index: currentHistoryIndex, scrollY });
ev.preventDefault();
return;
}
@ -344,6 +345,8 @@ const { fallback = 'animate' } = Astro.props as Props;
addEventListener(
'scroll',
throttle(() => {
// only updste history entries that are managed by us
// leave other entries alone and do not accidently add state.
if (history.state) {
persistState({ ...history.state, scrollY });
}