// ==UserScript== // @name Repubblica.it: Hide Annoying popups (the anti-adblock popup and others) // @name:it Repubblica.it: Nasconde i popup fastidiosi (il popup anti-adblock ed altri) // @description This script hides the annoying popups (the anti-adblock popup and others) that are shown in the web page. // @description:it Questo script nasconde i popup fastidiosi (il popup anti-adblock e altri) che vengono visualizzati nella pagina web. // @match https://*.repubblica.it/* // @grant none //// @run-at document-start // @version 1.1.2 // @author Cyrano68 // @license MIT // @namespace https://greasyfork.org/users/788550 // @downloadURL https://update.greasyfork.cloud/scripts/490674/Repubblicait%3A%20Hide%20Annoying%20popups%20%28the%20anti-adblock%20popup%20and%20others%29.user.js // @updateURL https://update.greasyfork.cloud/scripts/490674/Repubblicait%3A%20Hide%20Annoying%20popups%20%28the%20anti-adblock%20popup%20and%20others%29.meta.js // ==/UserScript== (function() { "use strict"; function getZeroFilledMillisecs(dateNow) { let millisecs = dateNow.getMilliseconds(); return ("00" + millisecs).slice(-3); } function console_log(text) { const dateNow = new Date(); //let now = dateNow.toISOString(); let now = dateNow.toLocaleString() + "." + getZeroFilledMillisecs(dateNow); console.log(`${now} ${text}`); } var myVersion = GM_info.script.version; console_log(`==> Repubblica_it_HideAnnoyingPopups: HELLO! Loading script (version: ${myVersion})...`); document.addEventListener("DOMContentLoaded", onDOMContentLoaded); window.addEventListener("load", onWindowLoaded); createMutationObserver(); function onDOMContentLoaded() { console_log(`==> Repubblica_it_HideAnnoyingPopups: onDOMContentLoaded - document.readyState=${document.readyState}`); // DO NOTHING! } function onWindowLoaded() { console_log(`==> Repubblica_it_HideAnnoyingPopups: onWindowLoaded - document.readyState=${document.readyState}`); // DO NOTHING! } function onMutationList(mutationList, observer) { //console_log(`==> Repubblica_it_HideAnnoyingPopups: onMutationList - mutationList.length=${mutationList.length}`); mutationList.forEach((mutation, i) => { //console_log(`==> Repubblica_it_HideAnnoyingPopups: onMutationList - mutation[${i}] - mutation.type=${mutation.type}`); if (mutation.type === "childList") { let addedNodes = mutation.addedNodes; if (addedNodes.length > 0) { //console_log(`==> Repubblica_it_HideAnnoyingPopups: onMutationList - mutation[${i}] - addedNodes.length=${addedNodes.length}`); addedNodes.forEach((addedNode, j) => { let searchedDiv = searchVisibleNode(addedNode, "div.fc-dialog-container"); if (searchedDiv !== null) { // Hide the anti-adblock popup and show again the vertical scrollbar. // //console_log(`==> Repubblica_it_HideAnnoyingPopups: onMutationList - searchedDiv.outerHTML='${searchedDiv.outerHTML}'`); let parentElement = searchedDiv.parentElement; console_log(`==> Repubblica_it_HideAnnoyingPopups: onMutationList - parentElement: tagName='${parentElement.tagName}' id='${parentElement.id}'`); searchedDiv.style.display = "none"; // Hide node. document.body.style.overflowY = "scroll"; // Show vertical scrollbar. searchedDiv.remove(); // Remove node. IMPORTANT: Without this instruction the script does NOT work properly. console_log(`==> Repubblica_it_HideAnnoyingPopups: onMutationList - 'fc-dialog-container' - mutation[${i}], addedNode[${j}] - searchedDiv.tagName='${searchedDiv.tagName}', searchedDiv.classList='${searchedDiv.classList}' ---> HIDDEN/REMOVED`); } searchedDiv = searchVisibleNode(addedNode, "div.video-frame__wrapper"); if (searchedDiv !== null) { // Even if the Firefox-Settings about autoplay is "Block Audio and Video" a popup containing a video-player appears // on the bottom-right of screen (it appears without audio and with stopped video, but appears). Here we hide that popup. // //console_log(`==> Repubblica_it_HideAnnoyingPopups: onMutationList - searchedDiv.outerHTML='${searchedDiv.outerHTML}'`); let parentElement = searchedDiv.parentElement; console_log(`==> Repubblica_it_HideAnnoyingPopups: onMutationList - parentElement: tagName='${parentElement.tagName}' id='${parentElement.id}'`); searchedDiv.style.display = "none"; // Hide node. document.body.style.overflowY = "scroll"; // Show vertical scrollbar. searchedDiv.remove(); // Remove node. IMPORTANT: Without this instruction the script does NOT work properly. console_log(`==> Repubblica_it_HideAnnoyingPopups: onMutationList - 'video-frame__wrapper' - mutation[${i}], addedNode[${j}] - searchedDiv.tagName='${searchedDiv.tagName}', searchedDiv.classList='${searchedDiv.classList}' ---> HIDDEN`); } searchedDiv = searchVisibleNode(addedNode, "div#adagio-overlay-try-buy"); if (searchedDiv !== null) { // Hide the popup that sometimes is shown when you want to exit from the current page of the site. // //console_log(`==> Repubblica_it_HideAnnoyingPopups: onMutationList - searchedDiv.outerHTML='${searchedDiv.outerHTML}'`); let parentElement = searchedDiv.parentElement; console_log(`==> Repubblica_it_HideAnnoyingPopups: onMutationList - parentElement='${parentElement}'`); searchedDiv.style.display = "none"; // Hide node. document.body.style.overflowY = "scroll"; // Show vertical scrollbar. console_log(`==> Repubblica_it_HideAnnoyingPopups: onMutationList - 'adagio-overlay-try-buy' - mutation[${i}], addedNode[${j}] - searchedDiv.tagName='${searchedDiv.tagName}', searchedDiv.id='${searchedDiv.id}' ---> HIDDEN`); } }); } } }); } function searchVisibleNode(node, selector) { let parentElement = node.parentElement; return (parentElement === null ? null : parentElement.querySelector(`${selector}:not([style*=\"display:none\"]):not([style*=\"display: none\"])`)); } function createMutationObserver() { console_log("==> Repubblica_it_HideAnnoyingPopups: createMutationObserver"); // SEE: https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver const MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver; // Create an observer instance linked to the callback function. const observer = new MutationObserver(onMutationList); // Options for the observer (which mutations to observe). const config = {subtree: true, childList: true}; // Start observing the target node for configured mutations. observer.observe(document, config); } console_log("==> Repubblica_it_HideAnnoyingPopups: Script loaded"); })();