NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Humble Auto-redeemer // @version 3.20 // @description Automatically opens any revealed steam keys in a new window. Combine with https://openuserjs.org/scripts/stuart.crouch/Steam_auto-activate to one-click redeem your games // @author Stuart Crouch // @match *://*.humblebundle.com/downloads?key=* // @require https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js // @grant none // @icon https://humblebundle-a.akamaihd.net/static/hashed/47e474eed38083df699b7dfd8d29d575e3398f1e.ico // @licence MIT // ==/UserScript== var targets = ['.whitebox', '.key-list']; $(document).ready(function() { function addObserverIfDesiredNodeAvailable() { var foundTarget; var found = targets.some(function(target) { var targetNode = document.querySelectorAll(target); if (targetNode.length >= 1) { //The node we need does not exist yet. //Wait 500ms and try again foundTarget = target; return true; } }); if (!found) { window.setTimeout(addObserverIfDesiredNodeAvailable,500); return; } // It exists, observe it to see what the user clicks observeTarget(foundTarget); } addObserverIfDesiredNodeAvailable(); function observeTarget(targetNodeName) { console.log ("observing " + targetNodeName); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if (mutation.type == 'childList') { if (mutation.addedNodes.length >= 1) { openSteamLinksInNewWindow(mutation); } } }); }); observer.observe( $(targetNodeName).get(0), { attributes: false, childList: true, subtree: true }); } }); function openSteamLinksInNewWindow(mutation){ mutation.addedNodes.forEach(function (currentNode){ var steamButtons = $(currentNode).find(".steam-redeem-button"); for (var i = 0; i < steamButtons.length; i++) { var win = window.open($(steamButtons[i]).attr('href'), '_blank'); } }); }