_posts
2017/11/1
微信浏览器返回按钮的事件监听(IOS / Android)
阅读时长 2 分钟
产品需求,用户在公众号聊天窗口点击小卡片进入步骤二,iPhone用户点击右上角返回按钮,页面进入步骤一。
页面是单页形式,通过 vue 的 transition 切换组件的形式来做的。也可以通过 url 的参数形式控制(&step=1 或者 &step=2)。
实测结论
窗口内打开链接
在没有交互前,iPhone 下的返回按钮应该是调用的原生的,popstate 不能监听到(这个描述可能不是那么准备)。页面内有一个弹窗,如果用户触发弹窗显示,然后关闭弹窗,历史记录就生效。 Android 下正常使用。
链接切换中
均可以
知识点学习
情景模拟,进入 index.html 的步骤二,点击返回按钮进入 index.html 的步骤一
step=2
if(history.state === null) {
let state = {};
state.url = 'index.html?step=1'
history.pushState(state, null);
}
window.addEventListener('popstate', (e) => {
location.href = e.target.history.state.url;
})
step=1
// 这种情况下,步骤一页面下点击一下返回按钮就和未添加state之前的步骤二点击返回操作一样,返回上一页面。