NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
(function () { "use strict"; // ==UserScript== // @run-at document-start // @name uso - Retry // @namespace http://userscripts.org/users/37004 // @description Auto-Refreshes current URI on USO when a non-200 response code is encountered. // @copyright 2011+, Marti Martz (http://userscripts.org/users/37004) // @license CC-BY-NC-SA-4.0; https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode // @license GPL-3.0-or-later; http://www.gnu.org/licenses/gpl-3.0.txt // @version 0.1.5.1eol // @icon https://www.gravatar.com/avatar/e615596ec6d7191ab628a1f0cec0006d?r=PG&s=48&default=identicon // @homepageURL https://github.com/Martii/UserScripts/tree/master/src/uso/Retry // @homepageURL https://openuserjs.org/scripts/Marti/uso_-_Retry // @homepageURL http://userscripts.org/scripts/show/162319 // @supportURL http://userscripts.org/topics/124034 // @include /^https?://userscripts\.org(?::\d{1,5})?/?/ // @include http://userscripts.org:8080/* // @include http://userscripts.org/* // @include https://userscripts.org/* // ==/UserScript== let MutationObserver = window.MutationObserver || window.WebKitMutationObserver, min = 750, max = 5000, timeout = min + Math.round(Math.random() * (max - min)), blocking = false ; if (MutationObserver) { let observer = new MutationObserver( function (aMutations) { aMutations.forEach( function (aMutation) { if (!blocking) { switch (aMutation.type) { case "childList": let xpr = document.evaluate( "//title", headNode, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null ); if (xpr && xpr.singleNodeValue) { blocking = true; observer.disconnect(); let thisNode = xpr.singleNodeValue; switch (thisNode.textContent) { case "502 Bad Gateway": case "503 Service Unavailable": case "404 Not Found": setTimeout(function () { location.reload(); }, timeout); break; } } break; } } } ); } ); let headNode = document.head || document.getElementsByTagName("head")[0]; if (headNode) { let config = { childList: true }; observer.observe(headNode, config); } else console.error("Failed to get headNode"); } else console.error("MutationObserver does not exist"); })();