首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cl903254852
V2EX  ›  程序员

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

  •  
  •   cl903254852 · 38 天前 · 542 次点击
    这是一个创建于 38 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    9 条回复    2020-06-03 16:27:18 +08:00
    coolicer
        1
    coolicer   38 天前 via iPhone
    内嵌页?
    chengxy
        2
    chengxy   38 天前
    这就是微信哦!
    cl903254852
        3
    cl903254852   37 天前
    @coolicer 可以说下思路吗?
    Ausmo
        4
    Ausmo   36 天前
    我也遇到了,微信内浏览器监听阻止了用户返回,在有些安卓机上就不行,用的 nextjs 的 Router.beforePopState,跟监听 popState 好像差不多一个道理,在某些安卓机上就是不好使,从企业微信进就没这问题,真是服了
    cl903254852
        5
    cl903254852   35 天前
    @Ausmo 从 7.0.14 就不行了,你那边有解决方法了吗
    Ausmo
        6
    Ausmo   35 天前
    @cl903254852 目前还没有 难搞
    Ausmo
        7
    Ausmo   35 天前
    我的需求是用户退出回到登录页后再返回时停留在登录页,用的 nextjs 我把登出跳转到登录页不用 location.href,用 next 路由的 Router.push,然后在登录页监听 next 的 Router.beforePopState,最终可以了,都能监听到,但是原生的 popState 还是不能监听,确实必须用户碰一下页面再返回时这个事件才能触发。
    biabia123456
        8
    biabia123456   30 天前
    心态炸了 也遇到这个问题 老哥解决了吗
    Mindreading
        9
    Mindreading   29 天前
    我对比了几个安卓手机的 UA, 发现好像只有 chrome 版本在 70 以上的才有这种情况, 就算用微信 7.0.12 也是一样的,应该是谷歌浏览器内核的原因! 不是微信的原因~
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1018 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 21:24 · PVG 05:24 · LAX 14:24 · JFK 17:24
    ♥ Do have faith in what you're doing.