【发布时间】:2016-05-22 20:21:44
【问题描述】:
我创建了一个小书签,它尝试使用localStorage 读写,并带有以下data: url:
data:text/html;base64,PGRvY3R5cGUgaHRtbD4KPGh0bWw+Cjxib2R5Pgo8c2NyaXB0Pgpsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY29udGVudCcsICdoZWxsbyB3b3JsZCcpOwpkb2N1bWVudC53cml0ZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY29udGVudCcpKTsKPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPg==
这将在浏览器中转换为以下代码:
<doctype html>
<html>
<body>
<script>
localStorage.setItem('content', 'hello world');
document.write(localStorage.getItem('content'));
</script>
</body>
</html>
这段代码尝试将字符串hello world写入浏览器的localStorage,读取字符串最后写入页面。
但是,这会导致以下错误:
未捕获的安全错误:无法从“Window”读取“localStorage”属性:“data:”URL 中的存储已禁用。
由于这种方法不起作用,它给我带来了一个问题:如何使用data: URL 将数据保存到浏览器?除了localStorage,还有其他API 可以用来将数据保存在data: URL 中吗?
编辑:
Cookie 不起作用。尝试访问 cookie 会出现以下错误:
未捕获的 DOMException:无法从“文档”读取“cookie”属性:“数据:”URL 中禁用了 Cookie。
编辑 2:
File system API 也不起作用。因错误对象而失败:
【问题讨论】:
-
听起来像是 XY 问题。什么是更高级别的用例?
-
您不能,因为数据 URL 不支持本地存储。 Check this.
-
@charlietfl 创建一个简单的“记事本”,即使在离线或重新启动浏览器时,我也可以将文本内容保存在浏览器中。
-
@TheAlpha 将问题更新为更清晰
-
我不知道您为什么需要数据 uri,而且似乎无法使用数据 uri。但是,您可以从小书签访问 localStorage,尽管您获取/设置的数据将与您在运行小书签时所在页面的 URL 相关联。只需使用:“ javascript:localStorage.setItem('content', 'hello world'); document.write(localStorage.getItem('content'));”
标签: javascript html browser