监听微信H5页面关闭,需要在此时机发送请求添加历史记录,我在onHide,onUnload事件中发送请求安卓手机没问题,但是苹果手机却无法监听到。
在网上找了很多方法如:window.addEventListener('pagehide'() => {})
和window.addEventListener('visibilitychange'() => {})
甚至使用navigator.sendBeacon()
发送请求都不行,有没有大佬出手相助。
这样试试,直接梭哈
let isEndSendOK = false;function report() { if (isEndSendOK) { return; } isEndSendOK = true; fetch('xxxxxx');}// 监听多个事件,做同一个事情,用一个标志位确定是否做过// 移动端普遍只支持 pagehidewindow.addEventListener('beforeunload', report);window.addEventListener('pagehide', report);window.addEventListener('unload', report);// IOS14 之前不会冒泡,只能监听documentdocument.addEventListener('visibilitychange', () => { if (document.visibilityState !== 'visible') { report(); } else { // 如果界面又显示了,说明没有关闭,重置标志位 isEndSendOK = false; }});
浏览器关闭时只能发送异步请求
1、可以使用navigator.sendBeacon(url, data),默认post请求,返回值Boolean
2、使用fetch发送请求
await fetch(``, { method: "POST", headers: { "Content-Type": "application/json" }, // 保持连接 keepalive: true });
H5页面在微信里面打开,H5页面播放视频时,关闭页面在IOS设备, visibilitychange, pagehide都监听不到? 这种要怎么调整?
ap.onSocketClose(CALLBACK) 监听 WebSocket 关闭事件。 代码示例 <script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.inc.min.js"></script> <style> .output{ display:block; max-width:
vue3 监听浏览器窗口关闭事件,在窗口close前发送一个请求? 现在想在浏览器窗口关闭前给后台发个请求,但是在window的beforeunload里写好像不触发?请问该如何解决呢?
ap.offSocketClose() 移除 WebSocket 关闭事件监听。
ap.onPullDownRefresh(CALLBACK) 监听页面下拉事件。 CALLBACK 参数说明 名称 类型 描述 refreshAvailable Boolean 是否可刷新。可通过ap.allowPullDownRefresh()设置此返回值 代码示例 <script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi
vue3 监听浏览器窗口关闭事件,在窗口close前发送一个请求记录下使用记录这样子。 但是实际使用过程中发现有时候调请求存记录会不成功,并不是每次在使用完关闭窗口后都成功的存了使用记录。 请问是由于请求完成前浏览器已经关闭了导致请求取消造成的嘛?如果是的话,该如何确保在窗口关闭前,发送后台请求,且确保能请求执行完成呢? 代码如下: