Pra*_*mon 6 javascript popstate
我正在尝试使用“ pushState”和“ popstate”事件来捕获“后退”按钮导航,但是,尽管popstate事件在Firefox中可以正确触发,但在Chrome浏览器中不会触发(版本76.0.3809.87(官方内部版本))(64 -bit)),如果没有用户交互。
通过测试,看来popstate事件仅在用户与页面进行交互(即,单击文档上的某个位置)时才被触发。因此,如果您加载页面而不进行交互并单击Back,则不会调用popstate函数。
我添加了一个小提琴来演示这一点:https : //jsfiddle.net/0xwvLndu/
要在Chrome中测试小提琴,只需点击链接并点击“后退”按钮。您不会看到任何警报。然后再次单击链接,但是这次单击Fiddle文档上的任意位置,然后单击“上一步”按钮,然后触发警报。
我在Chromium论坛上找到了一个可能与此怪癖有关的讨论,并且也许已实施该讨论以防止滥用历史记录-https://groups.google.com/a/chromium.org/forum/#! topic/ blink-dev / OCS7g72HtyI和https://github.com/WICG/interventions/issues/21#issuecomment-425609246
如果是这种情况,是否意味着就不能再依赖popstate来捕获“后退”按钮动作了,如果是,是否有解决方案?
以下是我一直在测试的示例:
window.addEventListener('load', function() {
history.pushState(null, null, document.URL);
});
window.addEventListener('popstate', function(event) {
alert('test');
});
Run Code Online (Sandbox Code Playgroud)
我希望无论用户如何交互都可以在“后退按钮”上触发警报,但这在Chrome中不会发生。
| 归档时间: |
|
| 查看次数: |
353 次 |
| 最近记录: |