安卓版本微信 v7.0.14 无法监听 hashchange 事件和 popstate 事件?

2020-05-25 16:55:16 +08:00
 cl903254852

之前发过类似帖子 沉了,再发一下,希望有好的建议。

页面初始化时,使用history.pushState添加历史,让用户可以点击返回按钮。

点击返回时触发 window.onpopstatewindow.onhashchange 事件来返回到指定地址.

测试很多手机 安卓版本微信 v7.0.14 返回无效,不触发 onpopstateonhashchange,导致无法返回而直接退出到微信界面。

个人测试,似乎必须通过手指点击页面任何部分才会触发(应该是微信针对该功能了,如果用户没有操作页面就不响应onpopstateonhashchange

那在 onhashchange 和 onpopstate 无法触发的前提下,如何让用户点击返回时,返回到指定地址呢?

2255 次点击
所在节点    程序员
9 条回复
coolicer
2020-05-25 19:04:28 +08:00
内嵌页?
chengxy
2020-05-25 20:39:51 +08:00
这就是微信哦!
cl903254852
2020-05-26 16:42:07 +08:00
@coolicer 可以说下思路吗?
Ausmo
2020-05-27 22:02:41 +08:00
我也遇到了,微信内浏览器监听阻止了用户返回,在有些安卓机上就不行,用的 nextjs 的 Router.beforePopState,跟监听 popState 好像差不多一个道理,在某些安卓机上就是不好使,从企业微信进就没这问题,真是服了
cl903254852
2020-05-28 09:46:30 +08:00
@Ausmo 从 7.0.14 就不行了,你那边有解决方法了吗
Ausmo
2020-05-28 10:01:29 +08:00
@cl903254852 目前还没有 难搞
Ausmo
2020-05-28 11:54:15 +08:00
我的需求是用户退出回到登录页后再返回时停留在登录页,用的 nextjs 我把登出跳转到登录页不用 location.href,用 next 路由的 Router.push,然后在登录页监听 next 的 Router.beforePopState,最终可以了,都能监听到,但是原生的 popState 还是不能监听,确实必须用户碰一下页面再返回时这个事件才能触发。
biabia123456
2020-06-02 21:37:44 +08:00
心态炸了 也遇到这个问题 老哥解决了吗
Mindreading
2020-06-03 16:27:18 +08:00
我对比了几个安卓手机的 UA, 发现好像只有 chrome 版本在 70 以上的才有这种情况, 就算用微信 7.0.12 也是一样的,应该是谷歌浏览器内核的原因! 不是微信的原因~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/675305

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX