// ==UserScript== // @name Remove Popup Ads on mp4upload.com & aniwave.to // @namespace http://tampermonkey.net/ // @version 1.2 // @description Remove all popup ads on both mp4upload.com and aniwave.to, including within media players // @author Goku // @match https://www.mp4upload.com/* // @match https://aniwave.to/* // @grant GM_config // @grant GM_registerMenuCommand // @downloadURL none // ==/UserScript== (function() { 'use strict'; // Function to remove popup ads indefinitely function removePopupAds() { // Remove popups every second from the whole page setInterval(function() { removePopups(document.body); }, 1000); // Check every 1 second // Remove popups every second from the player wrapper on aniwave.to if (window.location.hostname === 'aniwave.to') { var playerWrapper = document.getElementById('player-wrapper'); if (playerWrapper) { setInterval(function() { removePopups(playerWrapper); }, 1000); // Check every 1 second } } } // Function to remove popups within a specific container function removePopups(container) { var popupAds = container.querySelectorAll('a[href^="http://"]'); popupAds.forEach(function(popupAd) { popupAd.remove(); }); } // Function to activate the popup blocker function activateBlocker() { var global = unsafeWindow; // Reference to page's "window" through GreaseMonkey // Helper to create a button with inner text @text executing onclick @clickCallback var putButton = function (logDiv, text, clickCallback, inlineStyle) { var button = document.createElement("button"); button.innerHTML = text; button.style.cssText = "text-decoration:none; color:black; cursor:pointer; \ margin: 0 5px; font: 8pt microsoft sans serif; padding: 1px 3px; \ background-color:rgb(212,208,200); border-width:2px; border-style:outset; \ border-color:#eee #555 #555 #eee; color:black;" + inlineStyle; logDiv.appendChild(button); button.addEventListener("click", clickCallback); }; // Storing a reference to real "window.open" method var realWindowOpen = global.open; // This function will be called each time a script wants to open a new window var fakeWindowOpen = function(url) { console.log('Popup blocked: ', url); return false; }; // Override browser's "window.open" with our own implementation global.open = fakeWindowOpen; console.log('[Popup Blocker] Activated'); } // Check if the current domain is whitelisted function isCurrentDomainWhiteListed() { var domains = getDomainsArray(document.domain); var whitelisted = domains.some(function(d) { return GM_getValue("whitelisted_" + d); }); return whitelisted; } // Get array of domains for which it would make sense to whitelist them function getDomainsArray(documentDomain) { var d1 = documentDomain; var domainsArr = []; var lastDot1 = d1.lastIndexOf('.'); if (lastDot1 != -1) { var lastDot2 = d1.lastIndexOf('.', lastDot1 - 1); if (lastDot2 != -1 && lastDot2 != lastDot1) { var d2 = d1.substr(lastDot2 + 1); domainsArr.push(d2); var lastDot3 = d1.lastIndexOf('.', lastDot2 - 1); if (lastDot3 != -1 && lastDot3 != lastDot2) { var d3 = d1.substr(lastDot3 + 1); domainsArr.push(d3); } } } domainsArr.push(d1); return domainsArr; } // Wait for 1 second before starting to remove popups setTimeout(removePopupAds, 1000); // Check if the current domain is whitelisted, if not, activate the popup blocker var disabled = isCurrentDomainWhiteListed(); if (!disabled) { activateBlocker(); } })();