|
|
|
@ -286,21 +286,62 @@ None. |
|
|
|
|
|
|
|
|
|
## Supported browser engines |
|
|
|
|
|
|
|
|
|
* Gecko (Firefox): works in v132, both with JS enabled (offline mode) and with JS disabled (plain old client-server mode). |
|
|
|
|
Should work in offline mode starting with Firefox 63 (2018); should work in plain old client-server mode in all versions, |
|
|
|
|
The main required features are: |
|
|
|
|
|
|
|
|
|
* Custom elements: https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry/define |
|
|
|
|
(this demo will fall back to client-server mode if `window.customElements.define` is not available). |
|
|
|
|
* Custom build-in elements: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/is |
|
|
|
|
(again, this demo will fall back to client-server mode if this is not supported). |
|
|
|
|
* ES modules: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script/type. |
|
|
|
|
* Also CSS grid for nice presentation: https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template |
|
|
|
|
(presentation is less nice on small screens, should be easy to make layout responsive, but I already spent too much time on this project). |
|
|
|
|
* And `:not` CSS selector for critical UI features, |
|
|
|
|
(hiding and showing different messages and buttons depending on the game state): |
|
|
|
|
https://developer.mozilla.org/en-US/docs/Web/CSS/:not. |
|
|
|
|
|
|
|
|
|
Therefore, for desktop browsers: |
|
|
|
|
|
|
|
|
|
* Gecko (Firefox): checked and works in v132, both with JS enabled (offline mode) and with JS disabled (plain old client-server mode). |
|
|
|
|
Should work in offline mode starting with Firefox 63 (2018); should fall back plain old client-server mode in all versions, |
|
|
|
|
although the design in Firefox 51 (2017) and older will probably not look very good due to the lack of the recent CSS features. |
|
|
|
|
* Blink (e.g. Chromium and Chromium-based browsers): superficially checked in Chromium 130, basic functionality seems to work. |
|
|
|
|
Should work in offline mode starting with Chrome 67 (2018); should work in plain old client-server mode in all versions, |
|
|
|
|
Should work in offline mode starting with Chrome 67 (2018); should fall back to plain old client-server mode in all versions, |
|
|
|
|
although the design in Chrome 56 (2017) and older will probably not look very good due to the lack of the recent CSS features. |
|
|
|
|
* WebKit (e.g. qutebrowser and notably Safari): not checked; should **not** work in offline mode, |
|
|
|
|
* WebKit (e.g. qutebrowser, Konqueror, Epiphany and notably Safari): not checked; should **not** work in offline mode, |
|
|
|
|
because WebKit does not fully implement decade-old standard which Gecko and Blink supported since 2018: |
|
|
|
|
https://github.com/WebKit/standards-positions/issues/97. |
|
|
|
|
Everything should still work in online mode, falling back on client-server communication, |
|
|
|
|
except that the design in Safari before 10.1 (2017) will not look very good (but will still be functional), |
|
|
|
|
and will probably become disfunctional in Safari before 3.1 (2008). |
|
|
|
|
* Servo: checked, does **not** work in nightly as of 2024-11-20 and as of 2024-11-25, |
|
|
|
|
and it's developer tools host seemingly crashes on this page |
|
|
|
|
* Servo: checked, does **not** work in nightly as of 2024-11-20 and as of 2024-11-25 (even progressive form doesn't work), |
|
|
|
|
and its developer tools host seemingly crashes on this page |
|
|
|
|
(at least on the borrowed Windows machine; Servo is not packaged for Alpine, and its regular Linux builds don't run on Alpine). |
|
|
|
|
I decided to _not_ disable dynamic features in Servo because: |
|
|
|
|
1. Servo is not production-ready, its users know that it is not suitable to be used as a daily driver; |
|
|
|
|
2. This is likely a bug in servo, it will be fixed in the future, so |
|
|
|
|
3. Gating offline JS mode for non-servo browsers only will mean that in the future, when servo is fixed, |
|
|
|
|
this demo will only work in client-server mode, just because servo once had a bug. Not ideal. |
|
|
|
|
(Also not even attempting to use dynamic features in servo will make it more difficult to debug the problem in it.) |
|
|
|
|
* EdgeHTML (classic MS Edge before they migrated to Chromium): not checked, should fall back to client-server mode in all versions, |
|
|
|
|
but the page will not look very pretty in Edge before 16 (2017). |
|
|
|
|
* Trident (Internet Explorer): not checked, should fall back to client-server mode, |
|
|
|
|
UI should be functional (not pretty) in IE8+ (2008) and dysfunctional in IE7 and lower |
|
|
|
|
(fixable by refactoring the approach to displaying/hiding elements to avoid the usage of `:not` selector, |
|
|
|
|
but this is outside the scope of the task). |
|
|
|
|
|
|
|
|
|
So presumably, according to caniuse.com, |
|
|
|
|
|
|
|
|
|
* Offline JS mode should work in 88% desktop browsers and 80% total browsers |
|
|
|
|
(with Safari being the notable exception contributing 9% on desktop and 18% overall); |
|
|
|
|
* The demo should at least fall back to functional client-server model with the same UI |
|
|
|
|
in at least 98% desktop and at least 96% overall (and likely in at least 98% overall) |
|
|
|
|
(with IE lacking support for grids contributing ~1% on desktop and ~0.5% overall, |
|
|
|
|
and UC Browser and QQ Browser with unknown status of support for grids contributing further 2% overall); |
|
|
|
|
* This demo should at least fall back to functional client-server model with at least functional (but not neccessary pretty) UI |
|
|
|
|
in 99.9% desktop and at least 97% overall browsers (and likely at least 99% overall) |
|
|
|
|
(with older versions of IE lacking support for `:not` selectors contributing 0.1% on desktop, |
|
|
|
|
and UC Browser and QQ Browser with unknown status contributing 2% overall; |
|
|
|
|
it is highly likely that they do actually support `:not` selectors). |
|
|
|
|
|
|
|
|
|
## Known issues and quirks |
|
|
|
|
|
|
|
|
|