Turbolinks: clean up injected scripts and styles on page navigation (#3283)
* client hydration scripts should be removed before navigation * chore: adding a changeset * also cleanup injected styles on page navigation
This commit is contained in:
parent
204ff2c223
commit
9ad8aefdd7
2 changed files with 21 additions and 0 deletions
5
.changeset/tall-forks-cross.md
Normal file
5
.changeset/tall-forks-cross.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
'@astrojs/turbolinks': patch
|
||||
---
|
||||
|
||||
Fixes an issue that prevented client components from rehydrating when navigating back to a page
|
|
@ -1,2 +1,18 @@
|
|||
import Turbolinks from 'turbolinks';
|
||||
export { Turbolinks };
|
||||
|
||||
// Before every page navigation, remove any previously added component hydration scripts
|
||||
document.addEventListener('turbolinks:before-render', function () {
|
||||
const scripts = document.querySelectorAll('script[data-astro-component-hydration]');
|
||||
for (const script of scripts) {
|
||||
script.remove();
|
||||
}
|
||||
});
|
||||
|
||||
// After every page navigation, move the bundled styles into the body
|
||||
document.addEventListener('turbolinks:render', function () {
|
||||
const styles = document.querySelectorAll('link[href^="/assets/asset"][href$=".css"]');
|
||||
for (const style of styles) {
|
||||
document.body.append(style);
|
||||
}
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue