summaryrefslogtreecommitdiff
path: root/packages/integrations/turbolinks/client.js
diff options
context:
space:
mode:
authorGravatar Tony Sullivan <tony.f.sullivan@outlook.com> 2022-05-03 22:30:46 +0000
committerGravatar GitHub <noreply@github.com> 2022-05-03 22:30:46 +0000
commit9ad8aefdd79a039062f5a0510fabb2b5e535603f (patch)
treee18d78471bca2f59a656835b959c7572a21809a0 /packages/integrations/turbolinks/client.js
parent204ff2c2238c7eac3ce646efdd436e515ac3f36d (diff)
downloadastro-9ad8aefdd79a039062f5a0510fabb2b5e535603f.tar.gz
astro-9ad8aefdd79a039062f5a0510fabb2b5e535603f.tar.zst
astro-9ad8aefdd79a039062f5a0510fabb2b5e535603f.zip
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
Diffstat (limited to 'packages/integrations/turbolinks/client.js')
-rw-r--r--packages/integrations/turbolinks/client.js16
1 files changed, 16 insertions, 0 deletions
diff --git a/packages/integrations/turbolinks/client.js b/packages/integrations/turbolinks/client.js
index 6dde8c193..2305f3cf4 100644
--- a/packages/integrations/turbolinks/client.js
+++ b/packages/integrations/turbolinks/client.js
@@ -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);
+ }
+});