Steam Store - Removed App/Sub Redirect To SteamDB

If the Steam Store App or Sub doesn't exist, is removed or is region-locked, redirect to SteamDB.info instead of store.steampowered.com.

2017-02-06 يوللانغان نەشرى. ئەڭ يېڭى نەشرىنى كۆرۈش.

// ==UserScript==
// @name         Steam Store - Removed App/Sub Redirect To SteamDB
// @namespace    Royalgamer06
// @version      1.2
// @description  If the Steam Store App or Sub doesn't exist, is removed or is region-locked, redirect to SteamDB.info instead of store.steampowered.com.
// @author       Royalgamer06
// @include      *
// @exclude      file:*
// @run-at       document-idle
// @connect      store.steampowered.com
// @grant        GM_xmlhttpRequest
// @grant        unsafeWindow
// ==/UserScript==

if (/^https?:\/\/store\.steampowered.com\/(app|sub)\/.+$/.test(location.href)) {
    if (document.getElementById("error_box")) location.href = location.href.replace("store.steampowered.com", "steamdb.info");
}
Array.from(document.querySelectorAll("a[href*='://store.steampowered.com/app/'], a[href*='://store.steampowered.com/sub/']")).forEach(function(linkElem) {
    var href = linkElem.href;
    linkElem.style.cursor = "pointer";
    linkElem.onclick = function(ev) {
        ev.preventDefault();
        linkElem.removeAttribute("href");
    };
    linkElem.onmousedown = function(ev) {
        ev.preventDefault();
        linkElem.removeAttribute("href");
    };
    linkElem.onmouseup = function(ev) {
        ev.preventDefault();
        var w;
        var check = true;
        if (ev.button) {
            if (ev.button == 1) {
                w = unsafeWindow.open(href, "_blank");
            } else if (ev.button == 2) {
                check = false;
            }
        } else {
            w = linkElem.target ? unsafeWindow.open(href, linkElem.target) : unsafeWindow.open(href, "_self");
        }
        if (check) {
            GM_xmlhttpRequest({
                method: "HEAD",
                url: href,
                onload: function(response) {
                    if (/^https?:\/\/store\.steampowered.com\/?$/.test(response.finalUrl)) {
                        w.location.href = href.replace("store.steampowered.com", "steamdb.info");
                    }
                }
            });
        }
        setTimeout(function(){
            linkElem.setAttribute("href", href);
        }, 10);
    };
});