aboutsummaryrefslogtreecommitdiffstats
path: root/src/js/contentscript-start.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/js/contentscript-start.js')
-rw-r--r--src/js/contentscript-start.js23
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.
}