diff options
Diffstat (limited to 'src/js/contentscript-start.js')
-rw-r--r-- | src/js/contentscript-start.js | 23 |
1 files changed, 9 insertions, 14 deletions
diff --git a/src/js/contentscript-start.js b/src/js/contentscript-start.js index 0eaa1d9..3d78a9f 100644 --- a/src/js/contentscript-start.js +++ b/src/js/contentscript-start.js @@ -74,7 +74,6 @@ var localMessager = vAPI.messaging.channel('contentscript-start.js'); var cosmeticFilters = function(details) { var donthideCosmeticFilters = {}; var hideCosmeticFilters = {}; - var scriptTagFilters = []; var donthide = details.cosmeticDonthide; var hide = details.cosmeticHide; var i; @@ -92,14 +91,9 @@ var cosmeticFilters = function(details) { selector = hide[i]; if ( donthideCosmeticFilters[selector] ) { hide.splice(i, 1); - continue; + } else { + hideCosmeticFilters[selector] = true; } - if ( selector.lastIndexOf('script//:', 0) === 0 ) { - scriptTagFilters.push(selector.slice(9)); - hide.splice(i, 1); - continue; - } - hideCosmeticFilters[selector] = true; } } if ( hide.length !== 0 ) { @@ -117,11 +111,6 @@ var cosmeticFilters = function(details) { } vAPI.donthideCosmeticFilters = donthideCosmeticFilters; vAPI.hideCosmeticFilters = hideCosmeticFilters; - - if ( scriptTagFilters.length !== 0 ) { - vAPI.reScriptTagFilters = new RegExp(scriptTagFilters.join('|')); - document.addEventListener('beforescriptexecute', onBeforeScriptExecuteHandler); - } }; var netFilters = function(details) { @@ -140,13 +129,14 @@ var netFilters = function(details) { }; var onBeforeScriptExecuteHandler = function(ev) { - if ( vAPI.reScriptTagFilters.test(ev.target.textContent) ) { + if ( vAPI.reScriptTagRegex.test(ev.target.textContent) ) { ev.preventDefault(); ev.stopPropagation(); } }; var filteringHandler = function(details) { + var value; var styleTagCount = vAPI.styles.length; vAPI.skipCosmeticFiltering = !details || details.skipCosmeticFiltering; @@ -157,6 +147,11 @@ var filteringHandler = function(details) { if ( details.netHide.length !== 0 ) { netFilters(details); } + value = details.scriptTagRegex; + if ( typeof value === 'string' && value.length !== 0 ) { + vAPI.reScriptTagRegex = new RegExp(value); + document.addEventListener('beforescriptexecute', onBeforeScriptExecuteHandler); + } // The port will never be used again at this point, disconnecting allows // the browser to flush this script from memory. } |