From e15001bae1da4a7149536bc686e64486108b1eaf Mon Sep 17 00:00:00 2001 From: gorhill Date: Fri, 20 Mar 2015 10:45:14 -0400 Subject: [PATCH] #1048: also need the fix for resources loaded later --- src/js/contentscript-end.js | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/js/contentscript-end.js b/src/js/contentscript-end.js index 78a496a94..361da6104 100644 --- a/src/js/contentscript-end.js +++ b/src/js/contentscript-end.js @@ -213,6 +213,7 @@ var messager = vAPI.messaging.channel('contentscript-end.js'); //console.debug('µBlock> generic cosmetic filters: injecting %d CSS rules:', selectors.length, text); }; + /* var hideElements = function(selectors) { // https://github.com/gorhill/uBlock/issues/207 // Do not call querySelectorAll() using invalid CSS selectors @@ -230,6 +231,7 @@ var messager = vAPI.messaging.channel('contentscript-end.js'); elems[i].style.setProperty('display', 'none', 'important'); } }; + */ // Extract and return the staged nodes which (may) match the selectors. @@ -534,17 +536,15 @@ var messager = vAPI.messaging.channel('contentscript-end.js'); var filterRequestId = 1; var filterRequests = {}; - var FilterRequest = function(target, selector) { + var FilterRequest = function(target, tagName, attr) { this.id = filterRequestId++; this.target = target; - this.selector = selector; + this.tagName = tagName; + this.attr = attr; }; FilterRequest.send = function(target, tagName, prop, src) { - var req = new FilterRequest( - target, - tagName + '[' + prop + '="' + src + '"]' - ); + var req = new FilterRequest(target, tagName, prop); filterRequests[req.id] = req; messager.send( { @@ -559,7 +559,7 @@ var messager = vAPI.messaging.channel('contentscript-end.js'); ); }; - // Process answer: collapse, hide, or do nothing. + // Process answer: collapse, or do nothing. var onAnswerReceived = function(details) { // This should not happen under normal circumstances. It probably can @@ -590,11 +590,18 @@ var messager = vAPI.messaging.channel('contentscript-end.js'); // Never remove elements from the DOM, just hide them req.target.style.setProperty('display', 'none', 'important'); + // https://github.com/gorhill/uBlock/issues/1048 + // We need to use the atrtibute value for the CSS rule + var value = req.target.getAttribute(req.attr); + if ( !value ) { + return; + } + messager.send({ what: 'injectedSelectors', type: 'net', hostname: window.location.hostname, - selectors: req.selector + selectors: req.tagName + '[' + req.attr + '="' + value + '"]' }); };