我正在尝试使用HTML5 localStorage方法来保存数据。据我了解,localStorage应该在同一域内的页面之间保持不变。如果我错了,请纠正我。
但是,出于某种原因,我的localStorage值似乎不会在我计算机上同一目录中的页面之间保持不变。在这种情况下,它不被视为相同的域名吗?我有点失落。
以下是有关两个文件的代码:
文件1 (假设jQuery已包含在文件的其他地方)
<script type="text/javascript">
$(document).ready(function() {
$("form#settings").submit(function(event) {
event.preventDefault();
localStorage["display"] = $("input[name='display']:checked").val();;
localStorage["message"] = $("#disp_message").val();
});
});
</script>
<form id="settings">
<h1>Display</h1>
<input type="radio" name="display" id="message" value="message" />
<label for="message">Replace with message:</label>
<input type="text" id="disp_message" size="60" value="Test content." /><br />
<input type="radio" name="display" id="hide" value="hide" />
<label for="hide">Hide entries</label>
<br />
<br />
<input type="submit" />
</form>
文件2
<html><body>
<script>
document.write(localStorage["message"]);
document.write("<br />");
document.write(localStorage["message"]);
</script>
</body></html>
只是为了澄清代码的触摸,这个想法基本上是为了以后用于Google Chrome扩展程序,以隐藏某些基于某些条件的内容。文档1将作为“选项”页面的基础,文档2将作为实际扩展脚本的基础。但这与我的问题无关。
作为最后的澄清,我尝试了三种存储和访问localStorage变量的方法,即: localStorage [“key”] =“value”; localStorage.key =“value”; localStorage.setItem(“key”,“value”);
有什么想法吗?
答案 0 :(得分:2)
如果您在Chrome中进行测试,file://
下的所有内容,即使是同一目录中的文件夹也会被视为单独的域,因此相同的原始策略正在推行,localStorage
对每个域都是唯一的
我目前没有设置测试环境,但是使用命令行标志启动:
--allow-file-access-from-files
应成为您的目标。