diff options
| author | Berke Güzel <wenekar1@gmail.com> | 2026-02-09 00:07:55 +0300 |
|---|---|---|
| committer | Berke Güzel <wenekar1@gmail.com> | 2026-02-09 00:07:55 +0300 |
| commit | 416768216b00116a5d37c45279d740de09838d19 (patch) | |
| tree | 3f657ecf052f5ad5862669f68151ef8403ab2134 | |
| parent | 22986c36fe3ed7ad3fe585b1da608c2e5fb2a54d (diff) | |
font lazy load
| -rw-r--r-- | src/app.html | 3 | ||||
| -rw-r--r-- | src/routes/+layout.svelte | 22 |
2 files changed, 19 insertions, 6 deletions
diff --git a/src/app.html b/src/app.html index 94ca387..9f96d52 100644 --- a/src/app.html +++ b/src/app.html @@ -4,9 +4,6 @@ <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> - <link rel="preconnect" href="https://fonts.googleapis.com"> - <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> - <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap" rel="stylesheet"> %sveltekit.head% </head> diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index 5229cac..9b488bd 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -8,6 +8,17 @@ let { children } = $props(); onMount(() => { + const loadFonts = () => { + if (document.querySelector('link[data-app-fonts="true"]')) return; + + const link = document.createElement("link"); + link.rel = "stylesheet"; + link.href = + "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap"; + link.setAttribute("data-app-fonts", "true"); + document.head.appendChild(link); + }; + const loadAnalytics = () => { if (document.querySelector('script[data-goatcounter-script="true"]')) return; @@ -21,13 +32,18 @@ document.head.appendChild(script); }; + const runDeferredLoads = () => { + loadFonts(); + loadAnalytics(); + }; + if (document.readyState === "complete") { - window.setTimeout(loadAnalytics, 0); + window.setTimeout(runDeferredLoads, 0); return; } - window.addEventListener("load", loadAnalytics, { once: true }); - return () => window.removeEventListener("load", loadAnalytics); + window.addEventListener("load", runDeferredLoads, { once: true }); + return () => window.removeEventListener("load", runDeferredLoads); }); </script> |
