diff options
author | eug-vs <eug-vs@keemail.me> | 2020-08-08 12:42:14 +0300 |
---|---|---|
committer | eug-vs <eug-vs@keemail.me> | 2020-08-08 13:34:55 +0300 |
commit | 70d20b76f042a519e8e164279dfa31b5ce027d44 (patch) | |
tree | 01ac0b76b91185232f48635bf67a5dfaf232f6e8 | |
parent | c4a8f884cfba9adf2ddee03e64927fb5867e2485 (diff) | |
download | which-ui-70d20b76f042a519e8e164279dfa31b5ce027d44.tar.gz |
build: setup SPA routing for gh-pages
-rw-r--r-- | public/404.html | 41 | ||||
-rw-r--r-- | public/index.html | 31 |
2 files changed, 72 insertions, 0 deletions
diff --git a/public/404.html b/public/404.html new file mode 100644 index 0000000..086efc3 --- /dev/null +++ b/public/404.html @@ -0,0 +1,41 @@ +<!DOCTYPE html> +<html> + <head> + <meta charset="utf-8"> + <title>Which</title> + <script type="text/javascript"> + // Single Page Apps for GitHub Pages + // https://github.com/rafrex/spa-github-pages + // Copyright (c) 2016 Rafael Pedicini, licensed under the MIT License + // ---------------------------------------------------------------------- + // This script takes the current url and converts the path and query + // string into just a query string, and then redirects the browser + // to the new url with only a query string and hash fragment, + // e.g. http://www.foo.tld/one/two?a=b&c=d#qwe, becomes + // http://www.foo.tld/?p=/one/two&q=a=b~and~c=d#qwe + // Note: this 404.html file must be at least 512 bytes for it to work + // with Internet Explorer (it is currently > 512 bytes) + + // If you're creating a Project Pages site and NOT using a custom domain, + // then set segmentCount to 1 (enterprise users may need to set it to > 1). + // This way the code will only replace the route part of the path, and not + // the real directory in which the app resides, for example: + // https://username.github.io/repo-name/one/two?a=b&c=d#qwe becomes + // https://username.github.io/repo-name/?p=/one/two&q=a=b~and~c=d#qwe + // Otherwise, leave segmentCount as 0. + var segmentCount = 0; + + var l = window.location; + l.replace( + l.protocol + '//' + l.hostname + (l.port ? ':' + l.port : '') + + l.pathname.split('/').slice(0, 1 + segmentCount).join('/') + '/?p=/' + + l.pathname.slice(1).split('/').slice(segmentCount).join('/').replace(/&/g, '~and~') + + (l.search ? '&q=' + l.search.slice(1).replace(/&/g, '~and~') : '') + + l.hash + ); + + </script> + </head> + <body> + </body> +</html> diff --git a/public/index.html b/public/index.html index 001cbac..090b0d5 100644 --- a/public/index.html +++ b/public/index.html @@ -5,6 +5,37 @@ <link rel="icon" type="image/png" sizes="16x16" href="./which-logo-64.png" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Which</title> + <!-- Start Single Page Apps for GitHub Pages --> + <script type="text/javascript"> + // Single Page Apps for GitHub Pages + // https://github.com/rafrex/spa-github-pages + // Copyright (c) 2016 Rafael Pedicini, licensed under the MIT License + // ---------------------------------------------------------------------- + // This script checks to see if a redirect is present in the query string + // and converts it back into the correct url and adds it to the + // browser's history using window.history.replaceState(...), + // which won't cause the browser to attempt to load the new url. + // When the single page app is loaded further down in this file, + // the correct url will be waiting in the browser's history for + // the single page app to route accordingly. + (function(l) { + if (l.search) { + var q = {}; + l.search.slice(1).split('&').forEach(function(v) { + var a = v.split('='); + q[a[0]] = a.slice(1).join('=').replace(/~and~/g, '&'); + }); + if (q.p !== undefined) { + window.history.replaceState(null, null, + l.pathname.slice(0, -1) + (q.p || '') + + (q.q ? ('?' + q.q) : '') + + l.hash + ); + } + } + }(window.location)) + </script> + <!-- End Single Page Apps for GitHub Pages --> </head> <body> <noscript>You need to enable JavaScript to run this app.</noscript> |