diff --git a/js&css/web-accessible/functions.js b/js&css/web-accessible/functions.js index 2c845d0fe..fc56c671b 100644 --- a/js&css/web-accessible/functions.js +++ b/js&css/web-accessible/functions.js @@ -1,11 +1,27 @@ /*-------------------------------------------------------------- >>> FUNCTIONS --------------------------------------------------------------*/ -const DOM_filter = /^(SCRIPT|DOM-IF|DOM-REPEAT|svg|SPAN||#text|#comment|yt-icon-shape|iron-iconset-svg)$/; +ImprovedTube.childHandler = function (node) { + //console.log(node.nodeName); + if (node.nodeName === 'SCRIPT' || node.nodeName === 'iron-iconset-svg' || node.nodeName === 'svg' || node.nodeName === 'SPAN' || node.nodeName === '#text' || node.nodeName === '#comment' || node.nodeName === 'yt-icon-shape' || node.nodeName === 'DOM-IF' || node.nodeName === 'DOM-REPEAT') { + return + } + var children = node.children; + this.ytElementsHandler(node); + + if (children) { + for (var i = 0, l = children.length; i < l; i++) { + ImprovedTube.childHandler(children[i]); + } + } +} + +/* +const DOM_filter = /^(SCRIPT|DOM-IF|DOM-REPEAT|svg|SPAN|#text|#comment|yt-icon-shape|iron-iconset-svg)$/; ImprovedTube.childHandler = function (node) { //console.log(node.nodeName); if (DOM_filter.test(node.nodeName)) { return; } - ImprovedTube.ytElementsHandler(node); var children = node.children; + ImprovedTube.ytElementsHandler(node); if (children) { let i = 0; for (const child of children) { @@ -13,8 +29,8 @@ ImprovedTube.childHandler = function (node) { //console.log(node.nodeName); //console.log("node.nodeName:CHILD-"+i+":"+children[i].id+",class:"+children[i].className+","+children[i]+"("+children[i].nodeName+")"); i++; } - } -}; + } +}; */ ImprovedTube.ytElementsHandler = function (node) { var name = node.nodeName, diff --git a/js&css/web-accessible/init.js b/js&css/web-accessible/init.js index 8624bb4d4..ea61a2ae4 100644 --- a/js&css/web-accessible/init.js +++ b/js&css/web-accessible/init.js @@ -4,9 +4,35 @@ ImprovedTube.messages.create(); ImprovedTube.messages.listener(); if (document.body) { ImprovedTube.childHandler(document.body);} -//console.log("--- p FOR PARENT, c FOR CHILD, r FOR REMOVED :"); + ImprovedTube.observer = new MutationObserver(function (mutationList) { + + for (var i = 0, l = mutationList.length; i < l; i++) { + var mutation = mutationList[i]; + + if (mutation.type === 'childList') { + for (var j = 0, k = mutation.addedNodes.length; j < k; j++) { + + + + ImprovedTube.childHandler(mutation.addedNodes[j]); + } + + for (const node of mutation.removedNodes){ + if(node.nodeName === 'BUTTON' && node.id === 'it-popup-playlist-button') ImprovedTube.playlistPopupUpdate(); + } + } + if (mutation.target && mutation.target.id === 'owner-sub-count') { + // Extract and store the subscriber count + ImprovedTube.extractSubscriberCount(); + } + + } + + /* + //console.log("--- p FOR PARENT, c FOR CHILD, r FOR REMOVED :"); let i = 0; for (const mutated of mutationList) { + if (mutated.type === 'childList') { // if (/^(SCRIPT|DOM-IF|DOM-REPEAT|svg|SPAN|yt-icon-shape)$/.test(mutated.target.nodeName)) {i++; continue; } // ImprovedTube.ytElementsHandler(mutated.target); @@ -22,14 +48,16 @@ ImprovedTube.observer = new MutationObserver(function (mutationList) { if(mutated.target.id === 'owner-sub-count') {if (ImprovedTube.storage.ads === 'small_creators') {ImprovedTube.extractSubscriberCount(mutated.target);}} - } - /* if (mutated.type === 'characterData') { if (/#COMMENT/.test(mutated.target.nodeName)) {i++; continue; }; ImprovedTube.ytElementsHandler(mutated.target); -console.log("changed characterData:"+mutated.target.nodeValue+"("+mutated.target.id+",class:"+mutated.target.className+","+mutated.target+"("+mutated.target.nodeName+")"); - } if (mutated.type === 'attributes') {if (/^(caption-window-|ytp-progress-bar$|ytp-[a-z]*-progress$)/.test(mutated.target.nodeName)) return; ImprovedTube.ytElementsHandler(mutated.target); -console.log("mutated attribute:"+mutated.attributeName+"("+mutated.target.id+",class:"+mutated.target.className+","+mutated.target+"("+mutated.target.nodeName+"))"); - } */ - - i++;} + } +// if (mutated.type === 'characterData') { if (/#COMMENT/.test(mutated.target.nodeName)) {i++; continue; }; ImprovedTube.ytElementsHandler(mutated.target); +//console.log("changed characterData:"+mutated.target.nodeValue+"("+mutated.target.id+",class:"+mutated.target.className+","+mutated.target+"("+mutated.target.nodeName+")"); +// } if (mutated.type === 'attributes') {if (/^(caption-window-|ytp-progress-bar$|ytp-[a-z]*-progress$)/.test(mutated.target.nodeName)) return; ImprovedTube.ytElementsHandler(mutated.target); +//console.log("mutated attribute:"+mutated.attributeName+"("+mutated.target.id+",class:"+mutated.target.className+","+mutated.target+"("+mutated.target.nodeName+"))"); + } + i++;} + */ + + }).observe(document.documentElement, { // attributes: true, // attributeOldValue: true,