JavaScript:如何在本地存储更改时重新加载页面?

JavaScript:如何在本地存储更改时重新加载页面?,javascript,android,html,local-storage,Javascript,Android,Html,Local Storage,我正在制作一系列JavaScript页面,通过localStorage共享信息。一切正常,但当我更改其中一个页面中的参数,然后移动到另一个页面时,我需要使用CtrlR手动重新加载,以便更改生效。我成功地使用onBlur进行了自动刷新,但是,唉,当我将脚本上传到Android时,这样的功能就停止工作了(这些脚本的最终目的地是成为Android应用程序) 因此,现在我尝试将addEventListener与存储事件一起使用,但什么也没有发生,我仍然需要手动进行刷新。我读过很多网站,看过很多例子,但我

我正在制作一系列JavaScript页面,通过localStorage共享信息。一切正常,但当我更改其中一个页面中的参数,然后移动到另一个页面时,我需要使用CtrlR手动重新加载,以便更改生效。我成功地使用onBlur进行了自动刷新,但是,唉,当我将脚本上传到Android时,这样的功能就停止工作了(这些脚本的最终目的地是成为Android应用程序)

因此,现在我尝试将
addEventListener
与存储事件一起使用,但什么也没有发生,我仍然需要手动进行刷新。我读过很多网站,看过很多例子,但我还是不明白。以下是相关代码:

window.addEventListener("storage", handler);

function handler() {
    location.reload();
}
让我再分享一些我正在尝试做的事情:我有一系列的html页面,每个页面都有一个表单,用于计算饮食计划。第一个要求提供身体信息,并给出你的基础卡路里摄入量

第二个页面使用localStorage存储的基本calory摄入量数字显示在屏幕上,并以表格形式要求您介绍您的每日calory目标;根据这两个数字,它可以计算出减掉一公斤需要多长时间

如果我返回到第一页,输入不同的身体测量值,从而生成不同的输出,然后重新访问第2页,我想找到那里的基本calory数字自动刷新。我使用onBlur和onFocus在计算机上成功地做到了这一点:

window.onblur= function() {window.onfocus= function () {location.reload(true)}};
每次js检测到您刚从一个选项卡更改到另一个选项卡时,都会重新加载您登录的选项卡页面,不管本地存储数据是否已更改—这是一种“以防万一”的方法

问题是,当我将这些页面上传到安卓系统时,刷新停止工作(在安卓系统中,您无法通过ctrl+r强制刷新)。显然Android不考虑不同页面作为标签;这就解释了onBlur和onFocus不起作用的原因

这就是我现在尝试localStorage方法的原因:“如果localStorage已更改(即,有人正在更改其他页面中的值),则刷新当前页面上的屏幕(以便显示新值)”

我知道localStorage事件在我的浏览器中工作,因为它可以工作。但是我不能让代码在我的脚本中工作


我希望这次能更清楚地解释我自己(请耐心听我说,这是我的第一篇帖子…

当存储处理程序在另一个选项卡(而不是当前选项卡)中更改时,会调用它。
您可以重写setItem方法

!function() {
    var setItem = Storage.prototype.setItem;

    Storage.prototype.setItem = function() {
       setItem.apply(this, arguments);
       location.reload();
    };
}();

当存储处理程序在另一个选项卡(而不是当前选项卡)中更改时,将调用它。
您可以重写setItem方法

!function() {
    var setItem = Storage.prototype.setItem;

    Storage.prototype.setItem = function() {
       setItem.apply(this, arguments);
       location.reload();
    };
}();

无事件您应该在每次更改页面时重新加载数据,或者如果您实际上不是从一个url转到另一个url,则将数据作为本地对象保存,并在更新时保存,但始终从该对象读取数据。无事件您应该在每次更改页面时重新加载数据,或者如果您实际上不是从一个url转到另一个url,则将数据作为本地对象保存,并在更新时保存,但始终从该对象读取数据。