diff options
| author | ccd0 <admin@containerchan.org> | 2014-03-10 13:24:41 -0700 |
|---|---|---|
| committer | ccd0 <admin@containerchan.org> | 2014-03-10 13:24:41 -0700 |
| commit | 5b74472eeb15eae4602e768790fbe12a6f730196 (patch) | |
| tree | 1128af4004c25863fbc8fb675252679e687726db | |
| parent | 5698ebfdcaf0e5d96f10eb404f2d1687ed67a34c (diff) | |
deal with absent/disabled localStorage
| -rw-r--r-- | settings.js | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/settings.js b/settings.js index dc913e15..89fc8aa3 100644 --- a/settings.js +++ b/settings.js @@ -1,22 +1,32 @@ +// Default settings +var defaultSettings = { + "videoexpand": true, + "videohover": false, + "videovolume": 1.0 +}; + +// Non-persistent settings for when localStorage is absent/disabled +var tempSettings = {}; + // Scripts obtain settings by calling this function function setting(name) { - return JSON.parse(localStorage[name]); + if (localStorage) { + if (localStorage[name] === undefined) return defaultSettings[name]; + return JSON.parse(localStorage[name]); + } else { + if (tempSettings[name] === undefined) return defaultSettings[name]; + return tempSettings[name]; + } } // Settings should be changed with this function function changeSetting(name, value) { - localStorage[name] = JSON.stringify(value); -} - -// Default settings -function setDefault(name, value) { - if (!(name in localStorage)) { - changeSetting(name, value); + if (localStorage) { + localStorage[name] = JSON.stringify(value); + } else { + tempSettings[name] = value; } } -setDefault("videoexpand", true); -setDefault("videohover", false); -setDefault("videovolume", 1.0); // Create settings menu var settingsMenu = document.createElement("span"); |
