飞雪连天射白鹿,笑书神侠倚碧鸳

0%

追踪用户关闭网页

异步ajax、img标签上传数据、beacon API比较

1、异步ajax

1
2
3
4
5
6
7
8
9
10
11
12
13
function log() {
let xhr = new XMLHttpRequest();
xhr.open('post', '/log', true);
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.send('foo=bar');
}

window.addEventListener('unload', function(event) {
log();
for (let i = 1; i < 10000; i++) {
for (let m = 1; m < 10000; m++) { continue; }
}
});

2、img标签上传数据
后缀img.jpg?c=xxxx

1
2
3
4
5
6
7
8
9
const reportData = (url, data) => {
let img = document.createElement('img');
const params = [];
Object.keys(data).forEach((key) => {
params.push(key+'='+encodeURIComponent(data[key]));
});
img.onload = () => img = null;
img.src = url+'?'+params.join('&');
};

3、beacon API
70%不到的成功率

1
navigator.sendBeacon('/log', 'foo=bar');

beforeunload不能准确的判断刷新和关闭
navigator.sendBeacon不能捕捉直接关闭浏览器或任务管理器结束任务
还是后端监听心跳做比较好


听说,打赏我的人最后都找到了真爱
↘ 此处应有打赏 ↙
// 用户脚本