Index: chrome/content/elemHideEmulation.js |
=================================================================== |
--- a/chrome/content/elemHideEmulation.js |
+++ b/chrome/content/elemHideEmulation.js |
@@ -186,16 +186,17 @@ |
*/ |
*getSelectors(prefix, subtree, styles) |
{ |
yield [prefix + this._selector, subtree]; |
} |
}; |
const incompletePrefixRegexp = /[\s>+~]$/; |
+const relativeSelectorRegexp = /^[\s>+~]/; |
Wladimir Palant
2017/08/10 13:42:17
\s doesn't belong in here.
hub
2017/08/14 14:25:32
Done.
|
function HasSelector(selectors) |
{ |
this._innerSelectors = selectors; |
} |
HasSelector.prototype = { |
requiresHiding: true, |
@@ -221,18 +222,22 @@ |
{ |
let actualPrefix = (!prefix || incompletePrefixRegexp.test(prefix)) ? |
prefix + "*" : prefix; |
let elements = subtree.querySelectorAll(actualPrefix); |
for (let element of elements) |
{ |
let iter = evaluate(this._innerSelectors, 0, "", element, styles); |
for (let selector of iter) |
+ { |
+ if (relativeSelectorRegexp.test(selector)) |
+ selector = ":scope" + selector; |
Wladimir Palant
2017/08/10 13:36:08
Nice one, I didn't know about :scope yet. Browser
hub
2017/08/14 14:25:32
Good point. Will catch the exception. I'll see if
|
if (element.querySelector(selector)) |
yield element; |
+ } |
} |
} |
}; |
function PropsSelector(propertyExpression) |
{ |
let regexpString; |
if (propertyExpression.length >= 2 && propertyExpression[0] == "/" && |