【已解决】在网上搜索了许久均未能找到有效方法,而后经高人指点改为使用sendBeacon方法发送请求成功解决了这个问题,可以看下MDN对这个方法的解释:https://developer.mozilla.org/zh-CN/docs/Web/API/Navigator/sendBeacon。这个问题出现的根本原因应该还是安卓和ios的微信浏览器采用的内核不一样,所以出现了安卓可以,ios不行的情况,应该是WKWebview本身的限制。
微信ios 使用pagehide监听页面关闭事件,无法提交数据?安卓是没问题的,ios不行 //物理X关闭 window.addEventListener('pagehide', function () { $.ajax({ url:path +"/ChatRecordController/updateOnlineCloseType.json", dataType:"json", type:"post", async:false, data:{}, success:function(data){ }, error:function(error){ } }); });
2021-05-07在网上搜索了许久均未能找到有效方法,而后经高人指点改为使用sendBeacon方法发送请求成功解决了这个问题,可以看下MDN对这个方法的解释:https://developer.mozilla.org/zh-CN/docs/Web/API/Navigator/sendBeacon。这个问题出现的根本原因应该还是安卓和ios的微信浏览器采用的内核不一样,所以出现了安卓可以,ios不行的情况,也正如上面技术专员所说,应该是WKWebview本身的限制。
IOS微信浏览器网页pagehide不执行ajax同步方法了?想用pagehide获取用户在页面的停留时间pageshow正常,IOS系统pagehide中无法执行ajax
2021-05-07经过我自己的测试,原因并不是必须要事件触发history.state事件才能监听popstate,而是只要与页面产生了交互就可以触发,前提是必须产生交互,比如说只要点击一下屏幕,就可以监听了
Android设备微信 history.pushState 问题这个是在微信浏览器中的问题 你们的框架类型只能选择小程序 或 小游戏,公众号都不能选 场景1:初始直接调用 history.pushState 改变url url 改变不生效,无法监听 popstate。url 改变生效,无法监听 popstate。点击按钮获取 history.state,又可以监听 popstate。场景1:点击按钮,调用 history.pushState 改变url url 改变,可以监听 popstate。结论 必须事件触发 history.state 相关事件,才能监听 popstate。<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>pushState</title> </head> <body> <p><button id="urlBtn">获取 url</button></p> <p><button id="stateBtn">获取 history.state</button></p> <p><button id="pushStateBtn">设置 history.pushState</button></p> <script> var state0 = { title: '#', url: '#route0' } history.pushState(state0, state0.title, state0.url) //这个时候点返回正常应该不会退出页面,但是Android上退出了 document.getElementById('urlBtn').addEventListener('click', function () { alert(location.href) //触发一次, route0生效,点返回不会退出页面 }, false) document.getElementById('stateBtn').addEventListener('click', function () { alert(JSON.stringify(history.state)) //触发一次, route0生效,点返回不会退出页面 }, false) document.getElementById('pushStateBtn').addEventListener('click', function () { var state1 = { title: '#', url: '#route1' } history.pushState(state1, state1.title, state1.url) //触发一次,route0,route1生效, 点返回不会退出页面, }, false) </script> </body> </html>
2021-05-06