🏠 Home 

js-storeData

轻量级原生js本地数据存储管理工具(可选localstorage或GM油猴API)

สคริปต์นี้ไม่ควรถูกติดตั้งโดยตรง มันเป็นคลังสำหรับสคริปต์อื่น ๆ เพื่อบรรจุด้วยคำสั่งเมทา // @require https://update.greasyfork.org/scripts/444155/1045094/js-storeData.js

// ==UserScript==
// @name         js-storeData
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  轻量级原生js本地数据存储管理工具(可选localstorage或GM油猴API)
// @author       tutu辣么可爱(greasyfork) IcedWatermelonJuice(github)
// @dayr         2022.4.29 GMT+0800 (##标准时间)
// @license      MIT License
// @note         相关参考信息请前往greasyfork仓库或github仓库
// @note         greasyfork仓库:https://greasyfork.org/zh-CN/scripts/444155-js-storedata
// @note         github仓库:https://github.com/IcedWatermelonJuice/js-storeData
// ==/UserScript==
var storeDataJS = function(dataKey, defaultData, isGM = false) {
var defaultGM = function() {
console.log("未获得GM油猴API,请确认是否已授权");
return null;
}
this.check = function(data) {
try {
data = JSON.stringify(data);
data = JSON.parse(data);
if (data && typeof data === "object") {
return true
} else {
return false
}
} catch (e) {
return false
}
}
this.dataKey = dataKey;
this.defaultData = this.check(defaultData) ? defaultData : {};
this.isGM = isGM;
this.data = {};
this.defaultGet = function(key) {
return isGM ? (typeof GM_getValue === "function" ? GM_getValue(key) : defaultFn(key)) : localStorage
.getItem(key)
}
this.defaultSet = function(key, val) {
return isGM ? (typeof GM_setValue === "function" ? GM_setValue(key, val) : defaultFn(key, val)) :
localStorage.setItem(key, val)
}
this.defaultRemove = function(key) {
return isGM ? (typeof GM_deleteValue === "function" ? GM_deleteValue(key) : defaultFn(key)) :
localStorage.removeItem(key)
}
this.save = function() {
if (this.check(this.data)) {
this.defaultSet(this.dataKey, JSON.stringify(this.data))
} else {
console.log("保存失败!待保存数据损坏")
}
}
this.init = function() {
let data = this.defaultGet(this.dataKey);
try {
data = data ? JSON.parse(data) : {};
} catch (e) {
data = {}
}
data = {
...this.defaultData,
...data
};
this.data = data;
}
this.remove = function() {
this.defaultRemove(this.dataKey);
}
this.init();
}
storeDataJS.prototype = {
copy: function(data) {
return JSON.parse(JSON.stringify(data));
},
get: function(key, isDefault = false) {
let data = this.copy(isDefault ? this.defaultData : this.data);
return key ? data[key] : data;
},
set: function(key, val, isSave = false) {
if (val !== undefined && val !== null) {
this.data[key] = val;
} else if (this.check(key)) {
this.data = key;
}
if (isSave) {
this.save();
}
},
reset: function(isSave = false) {
let data = this.get(null, true);
this.set(data, null, isSave);
},
delete: function(key, isSave = false) {
delete this.data[key];
if (isSave) {
this.save();
}
}
}