Gar*_*ker 6 javascript firefox caching google-chrome reload
我对 Javascript 和 Web 编程总体来说是新手,所以这可能是一个愚蠢的错误。尽管如此,我在寻找相关信息时遇到了问题。
我正在用 Javascript 开发一个游戏,玩家可以通过点击并让他们的化身走到不同的建筑物/物体来四处走动并从一个场景移动到另一个场景。目前,我只有通过在this.gotoTimer = setTimeout(self.location = this.targetURL, 1000);检测到冲突时调用来更改页面位置。
该页面链接在两种浏览器中都正常。问题是当用户按下后退按钮时......在 Chrome 中,一切都会重置;播放器在我在代码中设置的同一区域中生成,并且所有“链接目标”仍然有效。这是期望的行为。
在 Firefox 中,一旦按下后退按钮并重新加载页面,玩家就会处于他/她最后已知的位置,并且他们访问的链接目标将不再链接......我最终可以通过访问它们并按返回键。
根据我的研究,这似乎是 Firefox 处理缓存的方式存在问题,我找到的解决方法包括向 Javascript 文件附加随机数或时间。这让我觉得很恶心。我可能也还差得远。
所以我想知道两件事:
请参阅pageshow 事件的文档。现代浏览器在返回时实际上不会重新加载页面,而是将其及其 JavaScript 状态一起恢复。所以你有几个选择:
\nunload事件处理程序以禁用此行为(次优,降低性能)。window.location.replace()而不是分配给window.location,这将阻止用户返回(我猜这是不可取的)。pageshow事件处理程序以重置 JavaScript 状态。| 归档时间: |
|
| 查看次数: |
3630 次 |
| 最近记录: |