接続が切断されたときにリロードを試みるには、次のものが必要です。
setInterval(window.location.reload(), 1000);
これに関する私の懸念は、それが永遠に続く可能性があり、私のアプリケーションを ddos することです。
上記を更新して、あきらめて壊れる前に最大20回試行するにはどうすればよいですか?
ありがとうございました
接続が切断されたときにリロードを試みるには、次のものが必要です。
setInterval(window.location.reload(), 1000);
これに関する私の懸念は、それが永遠に続く可能性があり、私のアプリケーションを ddos することです。
上記を更新して、あきらめて壊れる前に最大20回試行するにはどうすればよいですか?
ありがとうございました
これは私が汚れているように感じますが、更新するたびにウィンドウハッシュを更新/抽出できます:
function hack () {
var last = parseInt(location.hash.slice(1));
if (last < 20) {
window.location.hash = last + 1;
window.location.reload();
}
}
window.location.hash = 0;
setTimeout(hack, 1000);
あるページの読み込みから次のページの読み込みまで、いくつかのカウンターの状態を維持する必要があります。これにより、20 回のリロードがいつ行われたかを知ることができます。オプションは次のとおりです。
このページのリロード以外にこの値を保持する必要がない場合は、オプション 1) と 2) の方が適しています。必要なだけ保持されるからです。ハッシュ値はサーバーに送信されませんが、ハッシュ値の他の使用を妨げる可能性があります。クエリ パラメーターはサーバーに送信されますが、適切なサーバーは、それが認識していないクエリ値を無視し、他に干渉することはありません。私はおそらくクエリ パラメータを選択し、実際にそれを使用して、コードの一部で無限のリダイレクト ループを回避したことがあります。オプション 2) を次のように実装できます。
function checkAutoReload() {
var currentCnt = 0;
var re = /(\?|&)(reloadCnt=)(\d+)/;
var param = window.location.search.match(re), newURL;
if (param) {
currentCnt = parseInt(param[3], 10);
newURL = window.location.href.replace(re, "$1$2" + (currentCnt + 1))
} else {
newURL = window.location.href;
newURL += window.location.search ? "&" : "?";
newURL += "reloadCnt=1";
}
if (currentCnt < 20) {
window.location.replace(newURL);
}
}
setTimeout(checkAutoReload, 1000);
setInterval()
特定のページのコードは、リロードする前、またはリロードが完了したことを検出する前に一度だけ実行されるため、 aは必要ないことに注意してください。
reloadCountをlocalStorageに保存します
var maxReload = 20;
var reloadPage = function() {
if (typeof a !== "undefined" && a !== null) {
console.log(localStorage.reloadCount);
localStorage.reloadCount = 0;
};
var reloadCount = parseInt(localStorage.reloadCount, 10);
console.log(reloadCount);
if (reloadCount < maxReload) {
reloadCount += 1;
localStorage.reloadCount = reloadCount;
// RELOAD CODE HERE
};
};
// call reloadPage from your code
reloadPage();