【JavaScript】ios进入页面立即触发popstate问题
2022/06/27 11:34:53
解决方案
pageshow
事件在 popstate
事件之前触发。
监听 pageshow
事件,通过一个 flag
来控制 popstate
事件处理函数。
let flag = true; //定义一个变量
window.addEventListener("pageshow", function () {
flag = false; //进入页面时flag置为false,防止ios立即执行popstate
setTimeout(function () {
flag = true;
}, 100);
});
window.addEventListener("popstate", () => {
if (flag) {
// 执行处理函数
}
});
测试发现 pageshow
事件在三星浏览器上不触发,因此将 flag
默认值设置为 true
。