Skip to content

Instantly share code, notes, and snippets.

@qinlili23333
Last active April 13, 2022 00:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save qinlili23333/440042e7a4cd23e94efca30df9d9ee20 to your computer and use it in GitHub Desktop.
Save qinlili23333/440042e7a4cd23e94efca30df9d9ee20 to your computer and use it in GitHub Desktop.
xhr请求热点计数
(() => {
let hotspotData = {};
if (localStorage.xhrHotspot) {
hotspotData = JSON.parse(localStorage.xhrHotspot);
};
window.xhrHotspot = {
init: () => {
(open => {
XMLHttpRequest.prototype.open = function (method, url, async, user, pass) {
if (!(async === false)) {
async = true;
}
if (hotspotData[url]) {
hotspotData[url]++;
} else {
hotspotData[url] = 1;
};
localStorage.xhrHotspot = JSON.stringify(hotspotData);
return open.call(this, method, url, async, user, pass);
};
})(XMLHttpRequest.prototype.open);
console.log("XHR Hotspot Loaded!ver:1.1.0");
},
showXhrHotspotData: () => {
console.log(hotspotData);
},
clearHotspotData: () => {
hotspotData = {};
localStorage.xhrHotspot = JSON.stringify(hotspotData);
},
uploadHotspotData: url => {
// Example POST method implementation:
async function postData(url = '', data = {}) {
// Default options are marked with *
const response = await fetch(url, {
method: 'POST', // *GET, POST, PUT, DELETE, etc.
mode: 'cors', // no-cors, *cors, same-origin
cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
credentials: 'same-origin', // include, *same-origin, omit
headers: {
'Content-Type': 'application/json'
// 'Content-Type': 'application/x-www-form-urlencoded',
},
redirect: 'follow', // manual, *follow, error
referrerPolicy: 'no-referrer', // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url
body: JSON.stringify(data) // body data type must match "Content-Type" header
});
return response.json(); // parses JSON response into native JavaScript objects
}
postData(url, hotspotData)
.then(data => {
console.log(data); // JSON data parsed by `data.json()` call
});
}
}
})()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment