From 4ef310600982eecacf72f47cf477b1abe97464e4 Mon Sep 17 00:00:00 2001 From: ed Date: Thu, 18 Jan 2024 22:56:39 +0000 Subject: [PATCH] more old-browser support: * polyfill Set() for gridview (ie9, ie10) * navpane: do full-page nav if history api is ng (ie9) * show markdown as plaintext if rendering fails (ie*) * text-editor: hide preview pane if it doesn't work (ie*) * explicitly hide toasts on close (ie9, ff10) --- copyparty/web/browser.css | 4 ++++ copyparty/web/browser.js | 12 +++++++++--- copyparty/web/md2.js | 2 +- copyparty/web/ui.css | 3 +++ copyparty/web/util.js | 23 +++++++++++++++++++++++ 5 files changed, 40 insertions(+), 4 deletions(-) diff --git a/copyparty/web/browser.css b/copyparty/web/browser.css index cecd4554..656fdb50 100644 --- a/copyparty/web/browser.css +++ b/copyparty/web/browser.css @@ -818,6 +818,10 @@ html.y #path a:hover { .logue:empty { display: none; } +.logue.raw { + white-space: pre; + font-family: 'scp', 'consolas', monospace; +} #doc>iframe, .logue>iframe { background: var(--bgg); diff --git a/copyparty/web/browser.js b/copyparty/web/browser.js index e9081296..065c473c 100644 --- a/copyparty/web/browser.js +++ b/copyparty/web/browser.js @@ -372,7 +372,7 @@ var Ls = { "s_t1": "tags contains   (^=start, end=$)", "s_a1": "specific metadata properties", - "md_eshow": "cannot show ", + "md_eshow": "cannot render ", "md_off": "[📜readme] disabled in [⚙️] -- document hidden", "xhr403": "403: Access denied\n\ntry pressing F5, maybe you got logged out", @@ -855,7 +855,7 @@ var Ls = { "s_t1": "sang-info inneholder", "s_a1": "konkrete egenskaper", - "md_eshow": "kan ikke vise ", + "md_eshow": "viser forenklet ", "md_off": "[📜readme] er avskrudd i [⚙️] -- dokument skjult", "xhr403": "403: Tilgang nektet\n\nkanskje du ble logget ut? prøv å trykk F5", @@ -5933,6 +5933,9 @@ var treectl = (function () { } r.reqls = function (url, hpush, back) { + if (IE && !history.pushState) + return window.location = url; + var xhr = new XHR(); xhr.top = url.split('?')[0]; xhr.back = back @@ -7378,8 +7381,11 @@ function show_md(md, name, div, url, depth) { wfp_debounce.hide(); if (!marked) { - if (depth) + if (depth) { + clmod(div, 'raw', 1); + div.textContent = "--[ " + name + " ]---------\r\n" + md; return toast.warn(10, errmsg + (window.WebAssembly ? 'failed to load marked.js' : 'your browser is too old')); + } wfp_debounce.n--; return import_js(SR + '/.cpr/deps/marked.js', function () { diff --git a/copyparty/web/md2.js b/copyparty/web/md2.js index 8e30a0e7..f2f8a01a 100644 --- a/copyparty/web/md2.js +++ b/copyparty/web/md2.js @@ -163,7 +163,7 @@ redraw = (function () { dom_sbs.onclick = setsbs; dom_nsbs.onclick = modetoggle; - onresize(); + (IE ? modetoggle : onresize)(); return onresize; })(); diff --git a/copyparty/web/ui.css b/copyparty/web/ui.css index 2beae327..72b36a1d 100644 --- a/copyparty/web/ui.css +++ b/copyparty/web/ui.css @@ -105,6 +105,9 @@ html { #toast pre { margin: 0; } +#toast.hide { + display: none; +} #toast.vis { right: 1.3em; transform: inherit; diff --git a/copyparty/web/util.js b/copyparty/web/util.js index 041c6b16..d7fbc53b 100644 --- a/copyparty/web/util.js +++ b/copyparty/web/util.js @@ -161,6 +161,9 @@ function vis_exh(msg, url, lineNo, columnNo, error) { if (url.indexOf(' > eval') + 1 && !evalex_fatal) return; // md timer + if (IE && url.indexOf('prism.js') + 1) + return; + var ekey = url + '\n' + lineNo + '\n' + msg; if (ignexd[ekey] || crashed) return; @@ -376,6 +379,22 @@ catch (ex) { } } +if (!window.Set) + window.Set = function () { + var r = this; + r.size = 0; + r.d = {}; + r.add = function (k) { + if (!r.d[k]) { + r.d[k] = 1; + r.size++; + } + }; + r.has = function (k) { + return r.d[k]; + }; + }; + // https://stackoverflow.com/a/950146 function import_js(url, cb, ecb) { var head = document.head || document.getElementsByTagName('head')[0]; @@ -1404,6 +1423,10 @@ var toast = (function () { clmod(obj, 'vis'); r.visible = false; r.tag = obj; + if (!window.WebAssembly) + te = setTimeout(function () { + obj.className = 'hide'; + }, 500); }; r.show = function (cl, sec, txt, tag) {