我想禁用导致 Chrome 后退或前进的双指滑动。我有一个网站,如果用户不专门保存,他可能会失去工作进度。
我试过使用 window.onbeforeunload
但如果我在 url 中有哈希值,那似乎不起作用(后退会在 www.example.com/work/#step1#unsaved www.example.com/ 之间改变) work/#step0) 并且事件似乎没有触发。
我正要切换到另一个解决方案,但今天我注意到在 Google 文档中它已完全禁用。他们是如何做到的?
原文由 andrei 发布,翻译遵循 CC BY-SA 4.0 许可协议
你在错误的层面上看待问题。 OnBeforeUnload 根本不会被触发,因为从浏览器的角度来看没有任何东西被卸载。因此,坦率地说,您实施了错误的版本控制机制 - 片段用于页面状态,而不是您现在使用的文档状态。
如果您坚持通过散列片段维护状态,则需要使用另一种机制来防止页面状态更改。由于所有当前的浏览器都支持 LocalStorage,所以我会使用它。好吧,同时将所有文档状态数据放在那里而不是 URL 中,因为这就是 Google Docs 的工作方式,这就是为什么他们没有这个问题。