我想在HTML5中存储JavaScript对象localStorage,但我的对象显然正在转换为字符串.
我可以使用存储和检索原始JavaScript类型和数组localStorage,但对象似乎不起作用.他们应该吗?
这是我的代码:
var testObject = { 'one': 1, 'two': 2, 'three': 3 };
console.log('typeof testObject: ' + typeof testObject);
console.log('testObject properties:');
for (var prop in testObject) {
console.log(' ' + prop + ': ' + testObject[prop]);
}
// Put the object into storage
localStorage.setItem('testObject', testObject);
// Retrieve the object from storage
var retrievedObject = localStorage.getItem('testObject');
console.log('typeof retrievedObject: ' + typeof retrievedObject);
console.log('Value of retrievedObject: ' + retrievedObject);
Run Code Online (Sandbox Code Playgroud)
控制台输出是
typeof testObject: object
testObject properties:
one: 1 …Run Code Online (Sandbox Code Playgroud) 我想将我的画布保存为img.我有这个功能:
function save() {
document.getElementById("canvasimg").style.border = "2px solid";
var dataURL = canvas.toDataURL();
document.getElementById("canvasimg").src = dataURL;
document.getElementById("canvasimg").style.display = "inline";
}
Run Code Online (Sandbox Code Playgroud)
它给了我错误:
Uncaught SecurityError:无法在'HTMLCanvasElement'上执行'toDataURL':可能无法导出受污染的画布.
我该怎么办?
如果您尝试获取不存在的本地存储项,是否可以为该项设置默认值?
例如,假设在您的Web应用程序中,各种UI首选项都保存在本地存储中.当用户离开您的网站然后返回时,将根据从其本地存储中提取的值来设置UI.这非常有效.
但是,当用户第一次访问您的Web应用程序时,那些本地存储值尚不存在.因此,当您的JavaScript尝试获取这些本地存储项时,它们都将是未定义的.是否有办法在每个本地存储项不存在的情况下为每个本地存储项指定默认值?
大多数处理保存键/值对的编程语言都提供了一种指定默认值的排序方式(想想.ini配置文件接口).我期待这样的事情:
var preference = localStorage.getItem('some-key', 'Default Value');
Run Code Online (Sandbox Code Playgroud)
另外,我知道我可以通过测试它们是否为null/undefined来轻松地以编程方式设置默认值,并相应地设置值,但我想看看这是否内置于本地存储键/值对中,也许我只是没有看到它.如果此功能不存在,我将最终编写一些基本的本地存储包装函数,这些函数会添加此功能.