diff --git a/js/router.js b/js/router.js index 6c6d6f19..28b4ef7c 100644 --- a/js/router.js +++ b/js/router.js @@ -3,13 +3,17 @@ 'use strict'; const router = { - buffer: [], + buffer: (history.state || {}).buffer || [], watchers: [], getSearch(key) { return new URLSearchParams(location.search).get(key); }, + push(url, state = history.state) { + history.pushState(Object.assign({buffer: router.buffer}, state), null, url); + }, + update(replace) { const {buffer} = router; if (!buffer.length) { @@ -53,7 +57,7 @@ const router = { if (!hash) { hash = ' '; } - history.pushState(history.state, null, hash); + router.push(hash); router.update(); }, @@ -83,7 +87,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; }