我正在创建一些需要许多本地存储 key 的东西。因此我希望使用Math.floor来随机生成用户 key 。
我使用以下方法保存本地存储 key
var randomnumber = Math.floor((Math.random()*100000000)+1)
var randomnumberstringify = String(randomnumber)
function savebox(id) {
var answer = document.getElementById('box').value;
document.write(randomnumberstringify);
localStorage.setItem(randomnumberstringify, answer);
}
以及以下加载 key
function loadbox() {
if (localStorage.getItem(randomnumberstringify)) {
var answer = localStorage.getItem(randomnumberstringify);
}
else {
var answer = ' ';
}
document.getElementById('box').value = answer;
}
但是,正如您所看到的,加载函数使用“randomnumberstringify”。这是另一个随机数
所以本质上你保存一个随机数并加载另一个随机数(这显然不存在
是否有更好的方法使用随机数作为加载 key 和保存 key ?
最佳答案
如果您的 load
和 save
调用发生在同一浏览器 session 中,并且您的 randomnumberstringify
键存在于两者均可访问的范围内的 save
和 load
函数,并且不会再次为该范围重新创建,您应该可以使用这种方法。
但是,您想要做的是使用本地存储作为持久存储单元,这意味着您希望在不同的页面加载或不同的浏览器 session 中为给定用户访问相同的数据,其中在每次加载中,javascript 变量空间都会获得已删除。
如果您的情况是后一种情况,您应该使用哈希函数来生成 key ,并使用用户相关的字符串来生成哈希函数,这样您最终每次都会为相同的用户生成相同的 key 。
例如,假设您在 JavaScript 环境中定义了 sha1 哈希函数
var randomnumberstringify = sha1('username');
这种 key 生成方法允许您每次为同一用户获取相同的 key 。您可以毫无问题地设置并仅获取相关数据。
这里:http://www.webtoolkit.info/javascript-sha1.html你可以找到哈希函数 SHA1 的 JavaScript 实现。
关于javascript - 随机生成的本地存储 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19224387/