partial interfaceNavigator{ booleansendBeacon(DOMString url, optional (ArrayBufferView or Blob or DOMString or FormData)? data = null); };
使用
1 2
var data = new FormData(); navigator.sendBeacon('path/to/beacon', data);
就是这样,会发出一个 POST 请求。
测试
于是我做了个测试,测试环境:
浏览器:Chrome,版本 41.0.2244.0 canary (64-bit)
后端服务器:koa,v0.11.0
前端
前端设置了以下三种情况:
get
1 2 3 4 5
window.addEventListener('unload', function () { $.get('/log/get', { type: 'get' }, function (res) { console.log(res); }); });
post
1 2 3 4 5
window.addEventListener('unload', function () { $.post('/log/post', { type: 'post' }, function (res) { console.log(res); }); });
sendBeacon
1 2 3 4 5
window.addEventListener('unload', function () { var data = new FormData(); data.append('type', 'beacon'); navigator.sendBeacon('/log/beacon', data); });