diff --git a/lib/index.js b/lib/index.js index 8728d3c..c08ecac 100644 --- a/lib/index.js +++ b/lib/index.js @@ -58,6 +58,17 @@ exports.type = cors ? 'xhr' : 'jsonp'; */ function json(url, obj, headers, timeout, fn) { + headers = headers || {}; + if (navigator.sendBeacon + && Object.keys + && Object.keys(headers).length <= 1 + && (!headers['Content-Type'] || headers['Content-Type'].indexOf('text/plain') > -1)) { + var res = navigator.sendBeacon(url, JSON.stringify(obj)); + if (fn) { + fn(res ? null : { error: 'Failed to send' }, null); + } + return; + } var req = new XMLHttpRequest; req.onerror = fn; req.onreadystatechange = done;