diff options
Diffstat (limited to 'options.html')
| -rw-r--r-- | options.html | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/options.html b/options.html index bfa01450..f52cb6ec 100644 --- a/options.html +++ b/options.html @@ -80,7 +80,9 @@ var defaultSettings = chrome.extension.getBackgroundPage().defaultSettings; var editableFields = ["scrollStepSize", "defaultZoomLevel", "excludedUrls", "linkHintCharacters", - "userDefinedLinkHintCss", "keyMappings"]; + "userDefinedLinkHintCss", "keyMappings"]; + + var canBeEmptyFields = ["excludedUrls", "keyMappings", "userDefinedLinkHintCss"]; var postSaveHooks = { keyMappings: function (value) { @@ -118,10 +120,17 @@ var fieldValue = $(fieldName).value.trim(); var defaultFieldValue = (defaultSettings[fieldName] != null) ? defaultSettings[fieldName].toString() : ""; + + // Don't save to storage if it's equal to the default if (fieldValue == defaultFieldValue) delete localStorage[fieldName]; - else + // ..or if it's empty and not a field that we allow to be empty. + else if (!fieldValue && canBeEmptyFields.indexOf(fieldName) == -1) { + delete localStorage[fieldName]; + fieldValue = defaultFieldValue; + } else localStorage[fieldName] = fieldValue; + $(fieldName).value = fieldValue; $(fieldName).setAttribute("savedValue", fieldValue); @@ -133,7 +142,12 @@ // Restores select box state to saved value from localStorage. function populateOptions() { for (var i = 0; i < editableFields.length; i++) { - $(editableFields[i]).value = localStorage[editableFields[i]] || defaultSettings[editableFields[i]] || ""; + // If it's null or undefined, let's go to the default. We want to allow empty strings in certain cases. + if (localStorage[editableFields[i]] != "" && !localStorage[editableFields[i]]) { + $(editableFields[i]).value = defaultSettings[editableFields[i]] || ""; + } else { + $(editableFields[i]).value = localStorage[editableFields[i]]; + } $(editableFields[i]).setAttribute("savedValue", $(editableFields[i]).value); } } |
