navigation history support

This commit is contained in:
ed 2021-11-04 02:29:24 +01:00
parent b86c0ddc48
commit d2debced09

View file

@ -2326,10 +2326,14 @@ var showfile = (function () {
for (var a = 0; a < x.length; a++) for (var a = 0; a < x.length; a++)
r.map["." + x[a]] = x[a]; r.map["." + x[a]] = x[a];
r.sname = function (srch) {
return srch.split(/[?&]doc=/)[1].split('&')[0];
};
window.Prism = { 'manual': true }; window.Prism = { 'manual': true };
var em = QS('#bdoc>pre'); var em = QS('#bdoc>pre');
if (em) if (em)
em = [window.location.search.split(/[?&]doc=/)[1].split('&')[0], window.location.hash, em.textContent]; em = [r.sname(window.location.search), window.location.hash, em.textContent];
r.setstyle = function () { r.setstyle = function () {
qsr('#prism_css'); qsr('#prism_css');
@ -2375,9 +2379,10 @@ var showfile = (function () {
} }
}; };
r.show = function (url) { r.show = function (url, no_push) {
var xhr = new XMLHttpRequest(); var xhr = new XMLHttpRequest();
xhr.url = url; xhr.url = url;
xhr.no_push = no_push;
xhr.ts = Date.now(); xhr.ts = Date.now();
xhr.open('GET', url.split('?')[0] + '?raw', true); xhr.open('GET', url.split('?')[0] + '?raw', true);
xhr.onreadystatechange = load_cb; xhr.onreadystatechange = load_cb;
@ -2393,10 +2398,10 @@ var showfile = (function () {
return; return;
} }
render([this.url, '', this.responseText]); render([this.url, '', this.responseText], this.no_push);
} }
function render(doc) { function render(doc, no_push) {
r.q = null; r.q = null;
var url = doc[0], var url = doc[0],
lnh = doc[1], lnh = doc[1],
@ -2444,7 +2449,8 @@ var showfile = (function () {
wr.style.display = ''; wr.style.display = '';
document.documentElement.scrollTop = 0; document.documentElement.scrollTop = 0;
hist_push('?doc=' + url.split('/').slice(-1)[0]); var hfun = no_push ? hist_replace : hist_push;
hfun(get_evpath() + '?doc=' + url.split('/').slice(-1)[0]);
qsr('#docul'); qsr('#docul');
qsr('#docname'); qsr('#docname');
@ -3732,6 +3738,11 @@ var treectl = (function () {
return; return;
var url = new URL(e.state, "https://" + document.location.host); var url = new URL(e.state, "https://" + document.location.host);
var hbase = url.pathname;
var cbase = document.location.pathname;
if (url.search.indexOf('doc=') + 1 && hbase == cbase)
return showfile.show(hbase + showfile.sname(url.search), true);
treectl.goto(url.pathname); treectl.goto(url.pathname);
}; };