| Index: lib/filterClasses.js | 
| =================================================================== | 
| --- a/lib/filterClasses.js | 
| +++ b/lib/filterClasses.js | 
| @@ -921,16 +921,18 @@ | 
| selectorDomain: null, | 
| /** | 
| * CSS selector for the HTML elements that should be hidden | 
| * @type {string} | 
| */ | 
| selector: null | 
| }); | 
| +var abpSelectorRegExp = /\[-abp-selector=(["'])(.+)\1\]/; | 
| + | 
| /** | 
| * Creates an element hiding filter from a pre-parsed text representation | 
| * | 
| * @param {string} text same as in Filter() | 
| * @param {string} domain | 
| * domain part of the text representation (can be empty) | 
| * @param {boolean} isException exception rule indicator | 
| * @param {string} tagName tag name part (can be empty) | 
| @@ -983,23 +985,32 @@ | 
| // Note: The ElemHide.prototype.domainSeparator is duplicated here, if that | 
| // changes this must be changed too. | 
| if (domain && /(^|,)~?(,|$)/.test(domain)) | 
| return new InvalidFilter(text, "filter_invalid_domain"); | 
| if (isException) | 
| return new ElemHideException(text, domain, selector); | 
| - if (selector.indexOf("[-abp-properties=") != -1) | 
| + if ((selector.indexOf("[-abp-properties=") != -1) || | 
| + (selector.indexOf("[-abp-selector=") != -1)) | 
| { | 
| // Element hiding emulation filters are inefficient so we need to make sure | 
| // that they're only applied if they specify active domains | 
| if (!/,[^~][^,.]*\.[^,]/.test("," + domain)) | 
| return new InvalidFilter(text, "filter_elemhideemulation_nodomain"); | 
| + var match = abpSelectorRegExp.exec(selector); | 
| + if (match) | 
| + { | 
| + var prefix = selector.substr(0, match.index).trim(); | 
| + var suffix = selector.substr(match.index + match[0].length).trim(); | 
| + var unwrappedSelector = prefix + match[2] + suffix; | 
| + return new ElemHideEmulationFilter(text, domain, unwrappedSelector); | 
| + } | 
| return new ElemHideEmulationFilter(text, domain, selector); | 
| } | 
| return new ElemHideFilter(text, domain, selector); | 
| }; | 
| /** | 
| * Class for element hiding filters |