diff --git a/packages/browser-extension/src/manifest.json b/packages/browser-extension/src/manifest.json index 7d9f622..06c8048 100644 --- a/packages/browser-extension/src/manifest.json +++ b/packages/browser-extension/src/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 3, "name": "Cookie Dialog Monster", - "version": "6.3.3", + "version": "6.3.4", "default_locale": "en", "description": "__MSG_appDesc__", "icons": { @@ -24,6 +24,7 @@ "*://*.googleapis.com/embed/*", "*://*.sharepoint.com/*", "*://*.youtube.com/embed/*", + "*://*.youtube-nocookie.com/embed/*", "https://www.cookie-dialog-monster.com/*" ], "js": ["scripts/content.js", "scripts/dialog.js"], diff --git a/packages/browser-extension/src/popup.html b/packages/browser-extension/src/popup.html index 9fca302..3005f9b 100644 --- a/packages/browser-extension/src/popup.html +++ b/packages/browser-extension/src/popup.html @@ -48,7 +48,7 @@ - childNode.nodeType === Node.TEXT_NODE - ? [childNode.nodeType] - : [...[...childNode.childNodes].map((x) => x.nodeType)] - ); -} - /** * @description Forces a DOM clean in the specific element * @param {HTMLElement} element */ function forceClean(element) { - if (data?.elements.length && state.enabled && !preview) { - const elements = [...element.querySelectorAll(data.elements)]; + const elements = [...element.querySelectorAll(data.elements)]; - if (elements.length) { - fix(); - clean(elements, true); - } + if (elements.length) { + fix(); + clean(elements, true); } } @@ -132,10 +116,6 @@ function match(element, skipMatch) { return false; } - if (element.childNodes.length && flatElement(element).every((x) => x === Node.TEXT_NODE)) { - return false; - } - if (element.hasAttributes()) { return ( // 2023-06-10: twitch.tv temporary fix @@ -233,14 +213,12 @@ const observer = new MutationObserver((mutations) => { }); /** - * @description Fixes already existing element when page load issues - * @listens window#DOMContentLoaded + * @description Fixes still existing elements when page fully load + * @listens window#load */ -window.addEventListener('DOMContentLoaded', () => { - if (readingTime() < 4) { - forceClean(document.body); - } +window.addEventListener('load', () => { + window.dispatchEvent(new Event('run')); }); /** @@ -250,7 +228,23 @@ window.addEventListener('DOMContentLoaded', () => { window.addEventListener('pageshow', (event) => { if (event.persisted) { - forceClean(document.body); + window.dispatchEvent(new Event('run')); + } +}); + +/** + * @description Forces a clean when this event is fired + * @listens window#run + */ + +window.addEventListener('run', () => { + if (data?.elements.length && state.enabled && !preview) { + if (readingTime() < 4) { + forceClean(document.body); + } else { + // 2023-06-13: look into the first level of the document body, there are dialogs there very often + clean([...document.body.children]); + } } }); @@ -265,6 +259,12 @@ window.addEventListener('pageshow', (event) => { if (state.enabled) { data = await dispatch({ hostname, type: 'GET_DATA' }); + + // 2023-06-13: hack to force clean when data request takes too long and there are no changes later + if (document.readyState === 'complete') { + window.dispatchEvent(new Event('run')); + } + dispatch({ type: 'ENABLE_ICON' }); observer.observe(document.body ?? document.documentElement, options); } diff --git a/packages/web/src/index.html b/packages/web/src/index.html index 038a222..13f11f9 100644 --- a/packages/web/src/index.html +++ b/packages/web/src/index.html @@ -100,7 +100,7 @@ @@ -313,7 +313,7 @@ Open source Feel free to contribute to our - + GitHub repository @@ -442,9 +442,7 @@ An open source project built by you and - - wanhose - + wanhose
Feel free to contribute to our - + GitHub repository
An open source project built by you and - - wanhose - + wanhose