我遇到以下情况,在第一次进入页面或从另一个页面返回该页面时,我需要运行一些“代码”。
Safari 的缓存功能 ( https://webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/ ) 导致了这种情况,因为它缓存我的页面而不执行任何操作。
我按照他们的建议向“pageshow”事件添加事件监听器,这样我可以检查该事件是否持续存在,然后运行我需要的内容。
这个example基本上就是我想要的:
- 首页访问...附加监听器 = 酷,我有。
- 如果我导航出页面并返回(使用 Safari),它会在 pageshow = 酷,我有那个...上触发我的监听器。
- 每次我导航回该页面时都应该触发监听器 = 不酷,我的监听器触发一次。
我正在使用react,componentDidMount()是我准备一切的地方:
它第一次工作。我能够导航出我的页面并返回到它+执行我需要的东西。
问题是:第二次重复“导航出我的页面并返回”不会执行任何操作..看起来监听器被删除或发生其他情况。
最佳答案
经过两天尝试找到方法...我的同事让我尝试a listener on 'popstate' 。我太着迷于让“pageshow”监听器工作了,以至于我完全忘记了测试那个监听器;它完美地工作了:
window.addEventListener('popstate', function(event) {
关于javascript - React 组件上的 pageshow 事件监听器无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39800781/