diff options
author | gorhill <rhill@raymondhill.net> | 2015-09-11 17:59:25 -0400 |
---|---|---|
committer | gorhill <rhill@raymondhill.net> | 2015-09-11 17:59:25 -0400 |
commit | 59bdcbdb7e8ac788ed07c909606b7f9b31be1500 (patch) | |
tree | 9347cd2cbfc37b3d4a8a0ee1d5c645f49457f80d /src/js/contentscript-end.js | |
parent | 032becfd76f43c2c25fe18df6c85044ccccb5c6b (diff) | |
download | uBlock-59bdcbdb7e8ac788ed07c909606b7f9b31be1500.zip uBlock-59bdcbdb7e8ac788ed07c909606b7f9b31be1500.tar.gz uBlock-59bdcbdb7e8ac788ed07c909606b7f9b31be1500.tar.bz2 |
code reviewed implementation of high-medium generic cosmetic filters
Diffstat (limited to 'src/js/contentscript-end.js')
-rw-r--r-- | src/js/contentscript-end.js | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/js/contentscript-end.js b/src/js/contentscript-end.js index c12ff7b..b4cd920 100644 --- a/src/js/contentscript-end.js +++ b/src/js/contentscript-end.js @@ -577,19 +577,39 @@ var uBlockCollapser = (function() { var nodeList = selectNodes('a[href^="http"]'); var iNode = nodeList.length; var node, href, pos, hash, selectors, selector, iSelector; + while ( iNode-- ) { node = nodeList[iNode]; href = node.getAttribute('href'); if ( !href ) { continue; } + pos = href.indexOf('://'); if ( pos === -1 ) { continue; } + hash = href.slice(pos + 3, pos + 11); selectors = generics[hash]; if ( selectors === undefined ) { continue; } + + // A string. + if ( typeof selectors === 'string' ) { + if ( + href.lastIndexOf(selectors.slice(8, -2), 0) === 0 && + injectedSelectors.hasOwnProperty(selectors) === false + ) { + injectedSelectors[selectors] = true; + out.push(selectors); + } + continue; + } + + // An array of strings. iSelector = selectors.length; while ( iSelector-- ) { selector = selectors[iSelector]; - if ( injectedSelectors.hasOwnProperty(selector) === false ) { + if ( + href.lastIndexOf(selector.slice(8, -2), 0) === 0 && + injectedSelectors.hasOwnProperty(selector) === false + ) { injectedSelectors[selector] = true; out.push(selector); } |