mirror of
git://git.tartarus.org/simon/puzzles.git
synced 2025-04-20 23:51:29 -07:00
js: load preferences from HTML elements
It will be useful on KaiOS to be able to specify default user preferences that aren't the standard ones, in the same way that we specify some environment variables. As with environment variables, we can now do this be embedding a <script> element in the HTML like this: <script class="preferences" type="text/plain"> show-labels=true </script> These are loaded before the preferences from localStorage, so they just set defaults and can be overridden by the user (but not on KaiOS yet, because we still don't have dialogue boxes there).
This commit is contained in:
13
emcclib.js
13
emcclib.js
@ -821,9 +821,7 @@ mergeInto(LibraryManager.library, {
|
||||
* pass it back in as a string, via prefs_load_callback.
|
||||
*/
|
||||
js_load_prefs: function(me) {
|
||||
try {
|
||||
var prefsdata =
|
||||
localStorage.getItem(location.pathname + " preferences");
|
||||
function load_prefs_from_string(prefsdata) {
|
||||
if (prefsdata !== undefined && prefsdata !== null) {
|
||||
var lenbytes = lengthBytesUTF8(prefsdata) + 1;
|
||||
var dest = _malloc(lenbytes);
|
||||
@ -833,6 +831,15 @@ mergeInto(LibraryManager.library, {
|
||||
_free(dest);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Load any default preferences embedded in HTML.
|
||||
for (var prefsscript of
|
||||
document.querySelectorAll("script.preferences"))
|
||||
load_prefs_from_string(prefsscript.textContent);
|
||||
// Load saved preferences if they exist.
|
||||
try {
|
||||
load_prefs_from_string(
|
||||
localStorage.getItem(location.pathname + " preferences"));
|
||||
} catch (error) {
|
||||
// Log the error but otherwise pretend the settings were
|
||||
// absent.
|
||||
|
Reference in New Issue
Block a user