javascript onpopstate替代方案,具有与onhashchange相同的功能

javascript onpopstate替代方案,具有与onhashchange相同的功能,javascript,javascript-events,Javascript,Javascript Events,我在这个论坛上搜索过谷歌和其他一些问题,但它似乎没有回答我的问题 基于MDN: 请注意,仅调用history.pushState()或history.replaceState()不会触发popstate事件。popstate事件仅通过执行浏览器操作触发,例如单击后退按钮(或在JavaScript中调用history.back())。只有当用户在同一文档的两个历史记录条目之间导航时,才会触发该事件 我正在寻找与window.onhashchange()功能相同的onpopstate替代方案,它将在

我在这个论坛上搜索过谷歌和其他一些问题,但它似乎没有回答我的问题

基于MDN:

请注意,仅调用
history.pushState()
history.replaceState()
不会触发
popstate
事件。
popstate
事件仅通过执行浏览器操作触发,例如单击后退按钮(或在JavaScript中调用
history.back()
)。只有当用户在同一文档的两个历史记录条目之间导航时,才会触发该事件

我正在寻找与
window.onhashchange
()功能相同的
onpopstate
替代方案,它将在url更改时触发事件


您想分享您的解决方案吗

我认为您可能可以使用“History.js”工具,它提供了一个“statechange”事件,您可以监听它。该工具在按下前进/后退按钮或使用pushState/replaceState时触发该事件


当然,现在您遇到了一个不同的问题,这就是,对于这两种类型的操作,您都会触发事件,并且您经常想要区分它们,这就更困难了。所以你必须找到自己的解决方案来区分它们。大多数人似乎在准备调用pushState/replaceState时都会设置一些全局标志,然后在事件处理程序中检查该标志。如果设置了标志,则事件来自您自己的代码,如果没有设置,则来自浏览器按钮。

我认为您可能可以使用“History.js”工具,它提供了一个“statechange”事件,您可以侦听该事件。该工具在按下前进/后退按钮或使用pushState/replaceState时触发该事件


当然,现在您遇到了一个不同的问题,这就是,对于这两种类型的操作,您都会触发事件,并且您经常想要区分它们,这就更困难了。所以你必须找到自己的解决方案来区分它们。大多数人似乎在准备调用pushState/replaceState时都会设置一些全局标志,然后在事件处理程序中检查该标志。如果设置了标志,则事件来自您自己的代码,如果未设置,则来自浏览器按钮。

非常感谢您访问这里的@kyle simpson先生。我不会仅仅为了做简单的事情而使用外部库。但你是对的,应该破解我自己的解决方案。我创建自己版本的pushState。然后,创建路由器函数,该函数将由
onpopstate
和我自己的pushStatelil调用,但我在Google上搜索pushState的替代方案,这样我就可以在Reactjs应用程序上使用分页,而无需在自定义路由上刷新页面,我就可以得到404。myapp/newpage for ex.我可以利用History.js制作自己的API来管理它吗?非常感谢您访问这里的@kyle simpson先生。我不会仅仅为了做简单的事情而使用外部库。但你是对的,应该破解我自己的解决方案。我创建自己版本的pushState。然后,创建路由器函数,该函数将由
onpopstate
和我自己的pushStatelil调用,但我在Google上搜索pushState的替代方案,这样我就可以在Reactjs应用程序上使用分页,而无需在自定义路由上刷新页面,我就可以得到404。myapp/newpage for ex.我可以使用History.js来创建自己的API来管理它吗?