beforeunload ajax,离开页面时的ajax埋点

1. 监听页面离开

页面离开包括跳转到新页面和关闭页面

beforeunload

在unload之前触发,可用于阻塞页面退出(Chrome不支持自定义文案)

window.onbeforeunload = function (e) {

var e = e || window.event,

dialogText = '页面还未保存,确定要离开吗?';//该自定义内容仅在老版本浏览器中有效

if (e) {

e.returnValue = dialogText;

};

return dialogText;

};

pagehide

不同浏览器内表现形式不同,在微信等应用内仅有pagehide而无beforeunload事件

2. 离开时调用接口

直接调用异步ajax

无法完成三次握手,接口会被cancel

可以通过服务器端配置ignore_user_abort防止接口cancel

调用同步ajax

例如jquery的ajax配置async:false即可,但由于阻塞页面关闭或跳转,2019年底开始Chrome已不再支持

通过图片src(未测试)

创建img并将其src设为待请求的get链接,本质上同调用同步ajax

navigator.sendBeacon

专用于离开页面时埋点,会发起一个POST类型的HTTP请求,data可以为字符串或FormData,也可以不传data直接在url中拼接query

window.addEventListener("pagehide", function () {

navigator.sendBeacon(url,data);

});

使用websocket等长连接方式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值