From 5cdd2547936b29932e80a30ce348c81f521e0ff6 Mon Sep 17 00:00:00 2001 From: Nathan Herrmann Date: Mon, 10 Jan 2022 14:04:14 +0100 Subject: [PATCH 1/3] implemented fix --- packages/kit/src/runtime/client/renderer.js | 3 +++ packages/kit/src/runtime/client/router.js | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/packages/kit/src/runtime/client/renderer.js b/packages/kit/src/runtime/client/renderer.js index 7568965657ae..ae655b3e4710 100644 --- a/packages/kit/src/runtime/client/renderer.js +++ b/packages/kit/src/runtime/client/renderer.js @@ -159,6 +159,9 @@ export class Renderer { let error_args; + // url.hash is empty when coming from the server + url.hash = window.location.hash; + try { for (let i = 0; i < nodes.length; i += 1) { const is_leaf = i === nodes.length - 1; diff --git a/packages/kit/src/runtime/client/router.js b/packages/kit/src/runtime/client/router.js index 0a723b4232b7..1a3f5d57a274 100644 --- a/packages/kit/src/runtime/client/router.js +++ b/packages/kit/src/runtime/client/router.js @@ -162,6 +162,10 @@ export class Router { // Call `pushState` to add url to history so going back works. // Also make a delay, otherwise the browser default behaviour would not kick in setTimeout(() => history.pushState({}, '', url.href)); + const info = this.parse(url); + if (info) { + return this.renderer.update(info, [], false); + } return; } From 1226bacbd6c881d17a8bbfd473ab8144f117cc7f Mon Sep 17 00:00:00 2001 From: Nathan Herrmann Date: Mon, 10 Jan 2022 14:52:14 +0100 Subject: [PATCH 2/3] added tests --- .../routes/routing/hashes/pagestore.svelte | 19 +++++++++++++++++++ packages/kit/test/apps/basics/test/test.js | 19 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 packages/kit/test/apps/basics/src/routes/routing/hashes/pagestore.svelte diff --git a/packages/kit/test/apps/basics/src/routes/routing/hashes/pagestore.svelte b/packages/kit/test/apps/basics/src/routes/routing/hashes/pagestore.svelte new file mode 100644 index 000000000000..b62da28184be --- /dev/null +++ b/packages/kit/test/apps/basics/src/routes/routing/hashes/pagestore.svelte @@ -0,0 +1,19 @@ + + + + +

{curWindowHash}

+

{$page.url.hash}

+ +Nav to #ing with anchor tag +
Target
diff --git a/packages/kit/test/apps/basics/test/test.js b/packages/kit/test/apps/basics/test/test.js index df2fce51dae1..ad39fa2693ec 100644 --- a/packages/kit/test/apps/basics/test/test.js +++ b/packages/kit/test/apps/basics/test/test.js @@ -1489,6 +1489,25 @@ test.describe.parallel('Routing', () => { ).toBe('rgb(255, 0, 0)'); }); + test('$page.url.hash is correctly set on page load', async ({ page, javaScriptEnabled }) => { + if (javaScriptEnabled) { + await page.goto('/routing/hashes/pagestore#target'); + expect(await page.textContent('#window-hash')).toBe('#target'); + expect(await page.textContent('#page-url-hash')).toBe('#target'); + } + }); + + test('$page.url.hash is correctly set on navigation', async ({ page, javaScriptEnabled }) => { + if (javaScriptEnabled) { + await page.goto('/routing/hashes/pagestore'); + expect(await page.textContent('#window-hash')).toBe(''); + expect(await page.textContent('#page-url-hash')).toBe(''); + await page.click('[href="#target"]'); + expect(await page.textContent('#window-hash')).toBe('#target'); + expect(await page.textContent('#page-url-hash')).toBe('#target'); + } + }); + test('fallthrough', async ({ page }) => { await page.goto('/routing/fallthrough-simple/invalid'); expect(await page.textContent('h1')).toBe('Page'); From 053fa3cbac1afde1d456ed0baf61e9b9c6bf40bb Mon Sep 17 00:00:00 2001 From: Nathan Herrmann Date: Mon, 10 Jan 2022 15:45:19 +0100 Subject: [PATCH 3/3] added changeset --- .changeset/heavy-moons-admire.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/heavy-moons-admire.md diff --git a/.changeset/heavy-moons-admire.md b/.changeset/heavy-moons-admire.md new file mode 100644 index 000000000000..ebaff018a62c --- /dev/null +++ b/.changeset/heavy-moons-admire.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/kit': patch +--- + +url hash is now properly reflected in page store