Firefox中使用reload()无法刷新

最近在做网站的中英文版本切换功能时,暂时使用localStorage存储中英文标识tag。

大概思路是在页面初始化时,监听tag的值从而决定要加载的是中文还是英文页面,并即时刷新网页中的Frame

原先单独使用reload()方法,在谷歌浏览器和Safari上都能正常运行。但在火狐浏览器上测试时发现语言按钮无法切换。经过查找发现可能是由于火狐浏览器的刷新机制涉及优先缓存(reload()在火狐浏览器中,只刷新了页面,没有清除缓存),所以无法及时更新localStorage的值。试了StackOverflow上的诸多方法也没有很好的解决,还出现了页面反复多次自动刷新的问题。

后来通过调整语法解决。建议尝试location.href=”网址/当前页面地址”

function reload(){
	window.addEventListener('storage', event => {
		if(event.key == 'key'){
			location.reload(); // Firefox不兼容
			location.href = "index.html"; //解决
		}
	})
}

附上其它参考链接,虽然这些链接当时没有生效:

  • https://stackoverflow.com/questions/18967532/window-location-reload-not-working-for-firefox-and-chrome
  • https://developer.mozilla.org/zh-CN/docs/Web/API/Location/reload

发表评论