diff --git a/index.html b/index.html index f088a91ac..de9e5aad5 100644 --- a/index.html +++ b/index.html @@ -28,9 +28,90 @@ && criticalFiles.some( function(file) { return fileRef.indexOf(file) !== -1 })) { window.onload = function() { + // The whole complex part below implements page reloads with + // "exponential backoff". The retry attempt is passes as + // "rCounter" query parameter + var href = window.location.href; + + var retryMatch = href.match(/.+(\?|&)rCounter=(\d+)/); + var retryCountStr = retryMatch ? retryMatch[2] : "0"; + var retryCount = Number.parseInt(retryCountStr); + + if (retryMatch == null) { + var separator = href.indexOf("?") === -1 ? "?" : "&"; + var hashIdx = href.indexOf("#"); + + if (hashIdx === -1) { + href += separator + "rCounter=1"; + } else { + var hashPart = href.substr(hashIdx); + + href = href.substr(0, hashIdx) + + separator + "rCounter=1" + hashPart; + } + } else { + var separator = retryMatch[1]; + + href = href.replace( + /(\?|&)rCounter=(\d+)/, + separator + "rCounter=" + (retryCount + 1)); + } + + var delay = Math.pow(2, retryCount) * 2000; + if (isNaN(delay) || delay < 2000 || delay > 60000) + delay = 10000; + + var showMoreText = "show more"; + var showLessText = "show less"; + document.body.innerHTML - = "The application failed to load, missing file: " - + fileRef; + = "