@@ -31,7 +31,7 @@ var {FilterNotifier} = require("filterNotifier");
31
31
* Lookup table, filters by their associated key
32
32
* @type Object
33
33
*/
34
- var filterByKey = Object . create ( null ) ;
34
+ var filterByKey = [ ] ;
35
35
36
36
/**
37
37
* Lookup table, keys of the filters by filter text
@@ -125,7 +125,7 @@ var ElemHide = exports.ElemHide =
125
125
*/
126
126
clear : function ( )
127
127
{
128
- filterByKey = Object . create ( null ) ;
128
+ filterByKey = [ ] ;
129
129
keyByFilter = Object . create ( null ) ;
130
130
filtersByDomain = Object . create ( null ) ;
131
131
filtersBySelector = Object . create ( null ) ;
@@ -138,6 +138,7 @@ var ElemHide = exports.ElemHide =
138
138
139
139
_addToFiltersByDomain : function ( filter )
140
140
{
141
+ let key = keyByFilter [ filter . text ] ;
141
142
let domains = filter . domains || defaultDomains ;
142
143
for ( let domain in domains )
143
144
{
@@ -146,9 +147,9 @@ var ElemHide = exports.ElemHide =
146
147
filters = filtersByDomain [ domain ] = Object . create ( null ) ;
147
148
148
149
if ( domains [ domain ] )
149
- filters [ filter . text ] = filter ;
150
+ filters [ key ] = filter ;
150
151
else
151
- filters [ filter . text ] = false ;
152
+ filters [ key ] = false ;
152
153
}
153
154
} ,
154
155
@@ -191,12 +192,7 @@ var ElemHide = exports.ElemHide =
191
192
if ( filter . text in keyByFilter )
192
193
return ;
193
194
194
- let key ;
195
- do {
196
- key = Math . random ( ) . toFixed ( 15 ) . substr ( 5 ) ;
197
- } while ( key in filterByKey ) ;
198
-
199
- filterByKey [ key ] = filter ;
195
+ let key = filterByKey . push ( filter ) - 1 ;
200
196
keyByFilter [ filter . text ] = key ;
201
197
202
198
if ( usingGetSelectorsForDomain )
@@ -268,7 +264,7 @@ var ElemHide = exports.ElemHide =
268
264
{
269
265
let filters = filtersByDomain [ domain ] ;
270
266
if ( filters )
271
- delete filters [ filter . text ] ;
267
+ delete filters [ key ] ;
272
268
}
273
269
}
274
270
}
@@ -496,13 +492,13 @@ var ElemHide = exports.ElemHide =
496
492
let filters = filtersByDomain [ currentDomain ] ;
497
493
if ( filters )
498
494
{
499
- for ( let filterText in filters )
495
+ for ( let filterKey in filters )
500
496
{
501
- if ( filterText in seenFilters )
497
+ if ( filterKey in seenFilters )
502
498
continue ;
503
- seenFilters [ filterText ] = true ;
499
+ seenFilters [ filterKey ] = true ;
504
500
505
- let filter = filters [ filterText ] ;
501
+ let filter = filters [ filterKey ] ;
506
502
if ( filter && ! this . getException ( filter , domain ) )
507
503
selectors . push ( filter . selector ) ;
508
504
}
0 commit comments