diff --git a/js/router.js b/js/router.js index 6c6d6f19..fa3121f9 100644 --- a/js/router.js +++ b/js/router.js @@ -3,13 +3,19 @@ 'use strict'; const router = { - buffer: [], + buffer: (history.state || {}).buffer || [], watchers: [], getSearch(key) { return new URLSearchParams(location.search).get(key); }, + push(url) { + const state = history.state || {}; + state.buffer = router.buffer; + history.pushState(state, null, url); + }, + update(replace) { const {buffer} = router; if (!buffer.length) { @@ -53,7 +59,7 @@ const router = { if (!hash) { hash = ' '; } - history.pushState(history.state, null, hash); + router.push(hash); router.update(); }, @@ -83,7 +89,7 @@ window.on('popstate', () => router.update()); window.on('hashchange', () => router.update()); msg.on(e => { if (e.method === 'pushState' && e.url !== location.href) { - history.pushState(history.state, null, e.url); + router.push(e.url); router.update(); return true; }