安卓端检测浏览器返回问题

上一篇文章说了在安卓和iOS微信浏览器监测页面关闭返回的方法,当时测试时是有效果的,后来在安卓端不起作用了,只有浏览器中没有页面缓存重新加载时,才有作用

初步判断是页面首次加载时window.onbeforeunload起作用了,下一次进入读取的缓存页面,window.onbeforeunload不起作用了

window.addEventListener('pagehide', function () {})在iOS上没有问题,但是在安卓上不管第一次进入还是从缓存读取都不起作用,应该是浏览器兼容问题

通过debugmm.qq.com/?forcex5=true或者debugstbs.qq.com开启微信浏览器为X5内核后,发现安卓端可以用了,window.addEventListener('pagehide', function () {})起作用了

debugmm.qq.com/?forcex5=false关闭X5内核后,又不起作用了

发现

window.addEventListener( 'blur', function() { console.log( 'blur' ); } );
window.addEventListener( 'focus', function() { console.log( 'focus' ); } );
可以检测点击了关闭浏览器的功能,但是返回监测不到

经过测试发现

window.onbeforeunload = function () {
//窗口关闭前
saveExam(that)

};能监测到返回

所以最后解决方式是在安卓里用

window.addEventListener( 'blur', function() { console.log( 'blur' ); } );结合window.onbeforeunload和 window.addEventListener("popstate", function (e) {
iOS里用pagehide


原文地址:https://www.cnblogs.com/stubborn-donkey/p/12978860.html