假设我们有一个简单的 HTML 页面 homepage.html。
它引用了两个 Javascript 页面:使用 jQuery 的 one.js 和 two.js。
one.js 包含一个 $(document).ready(function () { 语句。two.js 包含跨多个页面使用的函数,但没有就绪函数。
用户在他们的浏览器(具体来说是 Safari)中打开两个 homepage.html 实例。
two.js 顶部有以下代码:
$(window).bind('storage', function (e) {
console.log('Only fires for pages OTHER than the current one...<---- IMPORTANT!!!', e);
if (e.key === "test"){
console.log('Changing test...', localStorage.test);
}
});
这是问题所在:当 localStorage.test 在两个实例中的任何一个中更新时,两个实例都在控制台中显示“正在更改测试...”。
我的理解是,localStorage 侦听器仅在当前页面以外的页面上触发。
但也许因为这些是同一个文件 NAMES 这个关于 localStorage 事件侦听器的声明是不正确的?
我希望只有未激活的 homepage.html 实例才会显示该消息。
我错过了什么?