summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorccd0 <admin@containerchan.org>2014-03-10 13:24:41 -0700
committerccd0 <admin@containerchan.org>2014-03-10 13:24:41 -0700
commit5b74472eeb15eae4602e768790fbe12a6f730196 (patch)
tree1128af4004c25863fbc8fb675252679e687726db
parent5698ebfdcaf0e5d96f10eb404f2d1687ed67a34c (diff)
deal with absent/disabled localStorage
-rw-r--r--settings.js32
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");