javascript - React 组件上的 pageshow 事件监听器无法正常工作

标签 javascript reactjs safari dom-events pageshow

我遇到以下情况,在第一次进入页面或从另一个页面返回该页面时,我需要运行一些“代码”。

Safari 的缓存功能 ( https://webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/ ) 导致了这种情况,因为它缓存我的页面而不执行任何操作

我按照他们的建议向“pageshow”事件添加事件监听器,这样我可以检查该事件是否持续存在,然后运行我需要的内容。

这个example基本上就是我想要的:

  • 首页访问...附加监听器 = 酷,我有。
  • 如果我导航出页面并返回(使用 Safari),它会在 pageshow = 酷,我有那个...上触发我的监听器。
  • 每次我导航回该页面时都应该触发监听器 = 不酷,我的监听器触发一次。

我正在使用react,componentDidMount()是我准备一切的地方:

enter image description here

它第一次工作。我能够导航出我的页面并返回到它+执行我需要的东西。

问题是:第二次重复“导航出我的页面并返回”不会执行任何操作..看起来监听器被删除或发生其他情况。

最佳答案

经过两天尝试找到方法...我的同事让我尝试a listener on 'popstate' 。我太着迷于让“pageshow”监听器工作了,以至于我完全忘记了测试那个监听器;它完美地工作了:

window.addEventListener('popstate', function(event) {

关于javascript - React 组件上的 pageshow 事件监听器无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39800781/

相关文章:

javascript - setState 具有数组属性的嵌套对象的属性的正确方法

ruby-on-rails - 在 React-Rails 应用程序中的 React ES6 组件之间导出/导入实用程序函数

javascript - iPhone 应用程序和移动 safari 之间是否有任何共享状态?

javascript - 调试模拟 httpbackend 请求

javascript - 使用 Redux 在 React 中调度 Action 的问题

javascript - 从action发送的数据没有被reducer接收到

css - 选项 :last-of-type/option:last-child not working in Safari

javascript - JSON.parse javascript 字符串

javascript - 使用 ajax 和 php 向数据库添加值

javascript - ReactJS Unexpected Token ) 仅在 Safari 上