From 8939d1243ddaa0294edb6cff422ac57f6c5794f6 Mon Sep 17 00:00:00 2001 From: wanhose Date: Sat, 16 May 2020 16:31:00 +0200 Subject: [PATCH] refactor: to use es6 modules --- js/content.js | 158 ----------------------------- {assets => src/assets}/icon128.png | Bin {assets => src/assets}/icon16.png | Bin {assets => src/assets}/icon32.png | Bin {assets => src/assets}/icon48.png | Bin src/js/content.js | 14 +++ src/js/modules/elements.js | 134 ++++++++++++++++++++++++ src/js/modules/script.js | 50 +++++++++ manifest.json => src/manifest.json | 7 +- 9 files changed, 202 insertions(+), 161 deletions(-) delete mode 100644 js/content.js rename {assets => src/assets}/icon128.png (100%) rename {assets => src/assets}/icon16.png (100%) rename {assets => src/assets}/icon32.png (100%) rename {assets => src/assets}/icon48.png (100%) create mode 100644 src/js/content.js create mode 100644 src/js/modules/elements.js create mode 100644 src/js/modules/script.js rename manifest.json => src/manifest.json (76%) diff --git a/js/content.js b/js/content.js deleted file mode 100644 index f512e7e..0000000 --- a/js/content.js +++ /dev/null @@ -1,158 +0,0 @@ -if (typeof chrome.app.isInstalled !== 'undefined') { - // Observer - const observer = new MutationObserver((mutations, observer) => { - mutations.forEach(mutation => { - if (mutation.type === 'childList') { - observer.disconnect(); - doMagic(); - observe(); - } - }); - }); - - // Remover - const doMagic = () => { - const notRemovableElements = Array.from([ - // PLO - ...document.getElementsByClassName("plu-no-scroll"), - // Quantcast - ...document.getElementsByClassName("qc-cmp-ui-showing"), - // Miscellaneous - ...document.getElementsByClassName("_2LLC6zrbk-vsnF0seit6vi"), - ...document.getElementsByClassName("gdpr"), - ]); - - const removableElements = Array.from([ - // BLQ - document.getElementById("blq-global"), - // CC - ...document.getElementsByClassName("cc-banner"), - ...document.getElementsByClassName("cc_banner"), - ...document.getElementsByClassName("cc-bottom"), - ...document.getElementsByClassName("cc_container"), - ...document.getElementsByClassName("cc-theme-block"), - ...document.getElementsByClassName("cc-type-info"), - ...document.getElementsByClassName("cc-window"), - // Civic - document.getElementById("ccc"), - document.getElementById("ccc-notify"), - document.getElementById("ccc-overlay"), - // CKY - document.getElementById('cky-consent'), - ...document.getElementsByClassName("cky-consent-bar"), - // Consent Management Provider - document.getElementById("cmpbox"), - document.getElementById("cmpbox2"), - document.getElementById("cmpContainer"), - // Cookie-Script - document.getElementById("cookiescript_injected"), - // cookieBAR - document.getElementById("cookie-bar"), - document.getElementById("cookie-bar-prompt"), - // crowdy.ai - document.getElementById("crowdy-flyout"), - document.getElementById("crowdy-privacy-snippet"), - document.getElementById("crowdy-privacy-widget"), - document.getElementById("crowdy-privacy-widget-background"), - // eni.com - document.getElementById("eni-cookie-banner"), - // ENS - document.getElementById("ensNotifyBanner"), - // ePrivacy - document.getElementById("ePrivacyDisclaimer"), - // Facebook - ...document.getElementsByClassName("fbPageBanner"), - // Google - document.getElementById("cookie-statement"), - // HS - document.getElementById("hs-eu-cookie-confirmation"), - // iubenda - document.getElementById("iubenda-cs-banner"), - ...document.getElementsByClassName("iubenda-cs-bottom"), - ...document.getElementsByClassName("iubenda-cs-container"), - ...document.getElementsByClassName("iubenda-cs-default"), - // Moove - document.getElementById("moove_gdpr_cookie_info_bar"), - // NHS - document.getElementById("nhsuk-cookie-banner"), - // OneTrust - document.getElementById("onetrust-consent-sdk"), - // Optanon - ...document.getElementsByClassName("optanon-alert-box-wrapper"), - // PLO - ...document.getElementsByClassName("plo-cookie-overlay"), - ...document.getElementsByClassName("plo-overlay"), - // Quantcast - ...document.getElementsByClassName("qc-cmp-ui-container"), - // Termly - document.getElementById("consent"), - // Wordpress - document.getElementById("catapult-cookie-bar"), - // Miscellaneous - ...document.getElementsByClassName("_1ouSF3xnwUjIOquxopuxSZ"), - ...document.getElementsByClassName("announcements"), - ...document.getElementsByClassName("cc-cookies"), - document.getElementById("cconsent-bar"), - document.getElementById("cookie-consent-banner"), - document.getElementById("cookie-div"), - document.getElementById("cookie-law-info-bar"), - document.getElementById("cookie-law-info-again"), - document.getElementById("cookie-notice"), - ...document.getElementsByClassName("cookie-permission"), - document.getElementById("cookie-policy"), - document.getElementById("cookie-policy-consent"), - document.getElementById("cookie1"), - ...document.getElementsByClassName("cookiebar"), - document.getElementById("cookieLayer"), - document.getElementById("cookieNotice"), - document.getElementById("cookieNotificationBannerWrapper"), - ...document.getElementsByClassName("cookies-notice"), - ...document.getElementsByClassName("cookies"), - ...document.getElementsByClassName("cookiesms"), - document.getElementById("cp-dialog"), - document.getElementById("cp-overlay"), - ...document.getElementsByClassName("fot-fixd"), - document.getElementById("global-cookie-message"), - ...document.getElementsByClassName("grp-header__cookiedisclaimer"), - ...document.getElementsByClassName("js-cookies"), - document.getElementById("js-gdpr-consent-banner"), - ...document.getElementsByClassName("pam"), - document.getElementById("sd-cmp"), - ...document.getElementsByClassName("security-policy"), - document.getElementById("sliding-popup"), - document.getElementById("softMessages-list"), - ...document.getElementsByClassName("softMessages-list"), - document.getElementById("u_0_1"), - ]); - - notRemovableElements.forEach(element => { - // PLO - element.classList.remove("plu-no-scroll"); - // Quantcast - element.classList.remove("qc-cmp-ui-showing"); - // Miscellaneous - element.classList.remove("_2LLC6zrbk-vsnF0seit6vi"); - element.classList.remove("gdpr"); - }); - - // Fix stucked pages - document.body.style.overflow = ''; - document.body.style.overflowX = ''; - document.body.style.overflowY = ''; - - removableElements.forEach(element => !!element && element.remove()); - }; - - // Observer starts observe when call this function - const observe = () => { - observer.observe(document.body, { - childList: true, - subtree: true, - //... - }); - }; - - // Then... - doMagic(); - observe(); -} \ No newline at end of file diff --git a/assets/icon128.png b/src/assets/icon128.png similarity index 100% rename from assets/icon128.png rename to src/assets/icon128.png diff --git a/assets/icon16.png b/src/assets/icon16.png similarity index 100% rename from assets/icon16.png rename to src/assets/icon16.png diff --git a/assets/icon32.png b/src/assets/icon32.png similarity index 100% rename from assets/icon32.png rename to src/assets/icon32.png diff --git a/assets/icon48.png b/src/assets/icon48.png similarity index 100% rename from assets/icon48.png rename to src/assets/icon48.png diff --git a/src/js/content.js b/src/js/content.js new file mode 100644 index 0000000..95f39c0 --- /dev/null +++ b/src/js/content.js @@ -0,0 +1,14 @@ +'use strict'; + +if (!!window.chrome && navigator.vendor.includes("Google")) { + // Get document head + const head = document.head || document.getElementsByTagName('head')[0]; + + // Create logic script + const script = document.createElement("script"); + script.setAttribute("src", chrome.runtime.getURL("modules/script.js")); + script.setAttribute("type", "module"); + + // Inject logic script + head.appendChild(script); +}; \ No newline at end of file diff --git a/src/js/modules/elements.js b/src/js/modules/elements.js new file mode 100644 index 0000000..a91c879 --- /dev/null +++ b/src/js/modules/elements.js @@ -0,0 +1,134 @@ +export const notRemovable = Array.from([ + // PLO + ...document.getElementsByClassName("plu-no-scroll"), + // Quantcast + ...document.getElementsByClassName("qc-cmp-ui-showing"), + // Miscellaneous + ...document.getElementsByClassName("_2LLC6zrbk-vsnF0seit6vi"), + ...document.getElementsByClassName("gdpr"), + ...document.getElementsByClassName("noScroll"), +]); + +export const removable = Array.from([ + // BLQ + document.getElementById("blq-global"), + // CC + ...document.getElementsByClassName("cc-banner"), + ...document.getElementsByClassName("cc_banner"), + ...document.getElementsByClassName("cc-bottom"), + ...document.getElementsByClassName("cc_container"), + ...document.getElementsByClassName("cc-theme-block"), + ...document.getElementsByClassName("cc-type-info"), + ...document.getElementsByClassName("cc-window"), + // Civic + document.getElementById("ccc"), + document.getElementById("ccc-notify"), + document.getElementById("ccc-overlay"), + // CKY + document.getElementById('cky-consent'), + ...document.getElementsByClassName("cky-consent-bar"), + // Clym + ...document.getElementsByClassName("clym-widget"), + document.getElementById("clym-widget-privacy-frame"), + // Consent Management Provider + document.getElementById("cmpbox"), + document.getElementById("cmpbox2"), + document.getElementById("cmpContainer"), + // Cookie-Script + document.getElementById("cookiescript_injected"), + // cookieBAR + document.getElementById("cookie-bar"), + document.getElementById("cookie-bar-prompt"), + // Cookie Information + document.getElementById("coiOverlay"), + // crowdy.ai + document.getElementById("crowdy-flyout"), + document.getElementById("crowdy-privacy-snippet"), + document.getElementById("crowdy-privacy-widget"), + document.getElementById("crowdy-privacy-widget-background"), + // Cybot + ...document.getElementsByClassName("CybotCookiebotDialog"), + ...document.getElementsByName("CybotCookiebotDialog"), + // eni.com + document.getElementById("eni-cookie-banner"), + // ENS + document.getElementById("ensNotifyBanner"), + // ePrivacy + document.getElementById("ePrivacyDisclaimer"), + // Facebook + ...document.getElementsByClassName("fbPageBanner"), + // Google + document.getElementById("cookie-statement"), + // HS + document.getElementById("hs-eu-cookie-confirmation"), + // iubenda + document.getElementById("iubenda-cs-banner"), + ...document.getElementsByClassName("iubenda-cs-bottom"), + ...document.getElementsByClassName("iubenda-cs-container"), + ...document.getElementsByClassName("iubenda-cs-default"), + // Moove + document.getElementById("moove_gdpr_cookie_info_bar"), + // NHS + document.getElementById("nhsuk-cookie-banner"), + // OneTrust + document.getElementById("onetrust-consent-sdk"), + // Optanon + ...document.getElementsByClassName("optanon-alert-box-wrapper"), + // PLO + ...document.getElementsByClassName("plo-cookie-overlay"), + ...document.getElementsByClassName("plo-overlay"), + // Quantcast + ...document.getElementsByClassName("qc-cmp-ui-container"), + // Seers + document.getElementById("seers-cx-banner"), + // Termly + document.getElementById("consent"), + // UniConsent + document.getElementById("uniccmp"), + // Wordpress + document.getElementById("catapult-cookie-bar"), + // Miscellaneous + ...document.getElementsByClassName("_1ouSF3xnwUjIOquxopuxSZ"), + ...document.getElementsByClassName("announcements"), + ...document.getElementsByClassName("cc-cookies"), + document.getElementById("cconsent-bar"), + document.getElementById("cookie-consent-banner"), + ...document.getElementsByClassName("cookiedisclaimer"), + ...document.getElementsByClassName("cookie_box"), + document.getElementById("cookie-div"), + document.getElementById("cookie-law-info-bar"), + document.getElementById("cookie-law-info-again"), + document.getElementById("cookie-notice"), + ...document.getElementsByClassName("cookie-permission"), + document.getElementById("cookie-policy"), + document.getElementById("cookie-policy-consent"), + document.getElementById("cookie1"), + ...document.getElementsByClassName("cookiebar"), + document.getElementById("cookieLayer"), + document.getElementById("cookieNotice"), + document.getElementById("cookieNotificationBannerWrapper"), + ...document.getElementsByClassName("cookies-notice"), + ...document.getElementsByClassName("cookies"), + ...document.getElementsByClassName("cookies-alert"), + ...document.getElementsByClassName("cookiesms"), + document.getElementById("cp-dialog"), + document.getElementById("cp-overlay"), + ...document.getElementsByClassName("fot-fixd"), + document.getElementById("global-cookie-message"), + ...document.getElementsByClassName("grp-header__cookiedisclaimer"), + document.getElementById("iFrame1"), + ...document.getElementsByClassName("js-cookies"), + document.getElementById("js-gdpr-consent-banner"), + ...document.getElementsByClassName("m-privacy-consent"), + ...document.getElementsByClassName("nd t fk vz ai wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr li ws wt wu wv ww wx wy wz xa xb xc xd"), + ...document.getElementsByClassName("pam"), + document.getElementById("privacy-consent"), + document.getElementById("scms-cc-cookie-bar"), + ...document.getElementsByClassName("scms-cookie-control"), + document.getElementById("sd-cmp"), + ...document.getElementsByClassName("security-policy"), + document.getElementById("sliding-popup"), + document.getElementById("softMessages-list"), + ...document.getElementsByClassName("softMessages-list"), + document.getElementById("u_0_1"), +]); \ No newline at end of file diff --git a/src/js/modules/script.js b/src/js/modules/script.js new file mode 100644 index 0000000..71c1fec --- /dev/null +++ b/src/js/modules/script.js @@ -0,0 +1,50 @@ +import { notRemovable, removable } from 'js/modules/elements.js'; + +// Observer +const observer = new MutationObserver((mutations, observer) => { + mutations.forEach(mutation => { + if (mutation.type === 'childList') { + observer.disconnect(); + doMagic(); + observe(); + } + }); +}); + +// Remover +const doMagic = () => { + // Remove irritating styles + notRemovable.forEach(element => { + // PLO + element.classList.remove("plu-no-scroll"); + // Quantcast + element.classList.remove("qc-cmp-ui-showing"); + // Miscellaneous + element.classList.remove("_2LLC6zrbk-vsnF0seit6vi"); + element.classList.remove("gdpr"); + element.classList.remove("noScroll"); + }); + + // Remove irritating elements + removable.forEach(element => !!element && element.remove()); + + // Fix stucked pages + if (document.body.style) { + document.body.style.removeProperty("overflow"); + document.body.style.removeProperty("overflowX"); + document.body.style.removeProperty("overflowY"); + }; +}; + +// Observer starts observe when call this function +const observe = () => { + observer.observe(document.body, { + childList: true, + subtree: true, + //... + }); +}; + +// Then... +doMagic(); +observe(); \ No newline at end of file diff --git a/manifest.json b/src/manifest.json similarity index 76% rename from manifest.json rename to src/manifest.json index 9c3c552..4203c57 100644 --- a/manifest.json +++ b/src/manifest.json @@ -1,6 +1,6 @@ { - "name": "No More Cookies", - "version": "1.7", + "name": "I Do Not Consent", + "version": "1.8", "description": "A Chrome extension that allows you to remove cookie consent dialogs automatically", "content_scripts": [ { @@ -16,7 +16,8 @@ }, "page_action": { "default_icon": "assets/icon32.png", - "default_title": "No More Cookies" + "default_title": "I Do Not Consent" }, + "web_accessible_resources": ["js/modules/*"], "manifest_version": 2 } \ No newline at end of file