为什么我的localStorage输入不会在我的个人计算机上的页面上持久存在?

时间:2010-12-09 03:07:57

标签: javascript local-storage

我正在尝试使用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>&nbsp;&nbsp;&nbsp;&nbsp;
    <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”);

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

如果您在Chrome中进行测试,file://下的所有内容,即使是同一目录中的文件夹也会被视为单独的域,因此相同的原始策略正在推行,localStorage对每个域都是唯一的

我目前没有设置测试环境,但是使用命令行标志启动:
--allow-file-access-from-files 成为您的目标。