Skip to content

Instantly share code, notes, and snippets.

@MarkTiedemann
Last active May 19, 2021 22:44
Show Gist options
  • Select an option

  • Save MarkTiedemann/c889d32c5802f6e8992b5b5ce89585da to your computer and use it in GitHub Desktop.

Select an option

Save MarkTiedemann/c889d32c5802f6e8992b5b5ce89585da to your computer and use it in GitHub Desktop.
JavaScript localStorage polyfill using ActiveX
var localStorage = (function () {
var fs = new ActiveXObject("Scripting.FileSystemObject");
var sh = new ActiveXObject("WScript.Shell");
var root = sh.ExpandEnvironmentStrings("%localappdata%") + "\\localStorage";
return {
getItem: function (key) {
try {
var file = fs.openTextFile(root + "\\" + key, 1);
var value = file.readAll();
file.close();
return value;
} catch (e) {
return null;
}
},
setItem: function (key, value) {
if (!fs.folderExists(root)) {
fs.createFolder(root);
}
var file = fs.createTextFile(root + "\\" + key, true);
file.write(value);
file.close();
},
removeItem: function (key) {
try {
fs.deleteFile(root + "\\" + key);
} catch (e) {}
},
clear: function () {
try {
fs.deleteFolder(root);
} catch (e) {}
}
}
})();
var localStorage = (function () {
var sh = new ActiveXObject("WScript.Shell");
var root = "HKCU\\Software\\localStorage\\";
return {
getItem: function (key) {
try {
return sh.regRead(root + key);
} catch (e) {
return null;
}
},
setItem: function (key, value) {
sh.regWrite(root + key, value);
},
removeItem: function (key) {
try {
sh.regDelete(root + key);
} catch (e) {}
},
clear: function () {
try {
sh.regDelete(root);
} catch (e) {}
}
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment