这是一个使用
window.localStorage在同一域名下的两个html页面之间传递数据的示例。由于
Same-origin policy的限制,它无法在不同的域名之间工作。
这个示例由两个托管在
jsfiddle.net上的页面组成,但您也可以从本地文件系统轻松地提供这些文件。无论哪种方式,此示例中都没有涉及服务器端通信。
第一页允许用户在
textarea元素中输入一些文本。有一个保存
button,当点击时将触发
click event,执行保存处理程序(作为addEventListener的第二个属性指定的
anonymous function),获取用户输入的文本并使用键
mySharedData
将其保存在localStorage中。
在jsfiddle上的第1页
HTML
<textarea id="input"></textarea>
<div>
<button id="save">Save</button>
</div>
JavaScript
(function (global) {
document.getElementById("save").addEventListener("click", function () {
global.localStorage.setItem("mySharedData", document.getElementById("output").value);
}, false);
}(window));
第二页从localStorage中召回保存的文本,该文本键名为
mySharedData
,并在文本区域中显示它。
在jsfiddle上的第2页
HTML
<textarea id="output"></textarea>
JavaScript
(function (global) {
document.getElementById("output").value = global.localStorage.getItem("mySharedData");
}(window));
这两个示例都包含在一个匿名的闭包中,该闭包会立即执行,并将window对象传递给其中,我们将其引用为变量global
。
最后,第一行是一条注释,但不是普通的注释;它是jslint使用的指令;这是一种静态代码分析工具,用于检查JavaScript源代码是否符合Douglas Crockford制定的编码规范。
另外的选择是使用:
cookies,同源策略仍然适用。
或者
URL query-strings将成为访问下一页时使用的地址的一部分,可以在Javascript中读取以获取数据。