astro/packages/integrations/turbolinks/client.js
Tony Sullivan 9ad8aefdd7
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
2022-05-03 22:30:46 +00:00

18 lines
652 B
JavaScript

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);
}
});