58 lines
1.5 KiB
HTML
58 lines
1.5 KiB
HTML
<!-- Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ -->
|
|
<!doctype html>
|
|
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8"/>
|
|
<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
|
|
<meta http-equiv="Pragma" content="no-cache" />
|
|
<meta http-equiv="Expires" content="0" />
|
|
<title>Network Monitor test page</title>
|
|
</head>
|
|
|
|
<body>
|
|
<p>Performing a custom number of GETs</p>
|
|
|
|
<script type="text/javascript">
|
|
/* exported performRequests hasOfflineEventFired */
|
|
"use strict";
|
|
|
|
function get(address) {
|
|
return new Promise(resolve => {
|
|
const xhr = new XMLHttpRequest();
|
|
xhr.open("GET", address, true);
|
|
|
|
xhr.onreadystatechange = function() {
|
|
if (this.readyState == this.DONE) {
|
|
resolve();
|
|
}
|
|
};
|
|
xhr.send(null);
|
|
});
|
|
}
|
|
|
|
// Use a count parameter to defeat caching.
|
|
let count = 0;
|
|
|
|
async function performRequests(total, url, timeout = 0) {
|
|
if (!total) {
|
|
return;
|
|
}
|
|
await get(url || "request_" + (count++));
|
|
setTimeout(performRequests.bind(this, --total, url, timeout), timeout);
|
|
}
|
|
|
|
// For testing the offline mode in the netmonitor
|
|
let isOfflineEventFired = false;
|
|
window.addEventListener("offline", () => {
|
|
isOfflineEventFired = true
|
|
}, { once: true });
|
|
|
|
function hasOfflineEventFired() {
|
|
return isOfflineEventFired;
|
|
}
|
|
</script>
|
|
</body>
|
|
|
|
</html>
|