diff --git a/lib/settingContainers.js b/lib/settingContainers.js index 7d069e4..360caa4 100644 --- a/lib/settingContainers.js +++ b/lib/settingContainers.js @@ -40,6 +40,7 @@ let newEntry = {url}; newEntry[name] = value; urlContainerValue.push(newEntry); + initializeUrlSetting(newEntry); matching = [newEntry]; } matching[0][name] = value; @@ -164,51 +165,53 @@ } }; + function initializeUrlSetting(urlSetting){ + let regExp; + const domain = !!urlSetting.url.match(/^[A-Za-z0-9_.-]+$/); + if (domain){ + regExp = new RegExp( + "(?:^|\\.)" + urlSetting.url.replace(/([\\+*?[^\]$(){}=!|.])/g, "\\$1") + "\\.?$", + "i" + ); + } + else { + regExp = new RegExp(urlSetting.url, "i"); + } + const match = function(url){ + if (!url){ + return false; + } + else if ( + url instanceof String || + (typeof url) === "string" + ){ + return url === urlSetting.url; + } + else if (domain){ + return (url.hostname || "").match(regExp); + } + else { + return url.href.match(regExp); + } + }; + Object.defineProperty( + urlSetting, + "match", + { + enumerable: false, + writable: true, + configurable: true, + value: match + } + ); + } + scope.initializeUrlContainer = function(eventHandler){ if (!scope.urlContainer){ return; } scope.urlContainer.on(function({newValue, oldValue}){ - newValue.forEach(function(urlSetting){ - let regExp; - const domain = !!urlSetting.url.match(/^[A-Za-z0-9_.-]+$/); - if (domain){ - regExp = new RegExp( - "(?:^|\\.)" + urlSetting.url.replace(/([\\+*?[^\]$(){}=!|.])/g, "\\$1") + "\\.?$", - "i" - ); - } - else { - regExp = new RegExp(urlSetting.url, "i"); - } - const match = function(url){ - if (!url){ - return false; - } - else if ( - url instanceof String || - (typeof url) === "string" - ){ - return url === urlSetting.url; - } - else if (domain){ - return (url.hostname || "").match(regExp); - } - else { - return url.href.match(regExp); - } - }; - Object.defineProperty( - urlSetting, - "match", - { - enumerable: false, - writable: true, - configurable: true, - value: match - } - ); - }); + newValue.forEach(initializeUrlSetting); const newUrls = newValue.map(function(entry){return entry.url;}); const oldUrls = oldValue.map(function(entry){return entry.url;}); diff --git a/releaseNotes.txt b/releaseNotes.txt index e708dff..2efecdd 100644 --- a/releaseNotes.txt +++ b/releaseNotes.txt @@ -8,6 +8,7 @@ Version 1.6: fixes: - fix message canvasBlocker-unload + - convenience preset did not work properly known issues: - if a data URL is blocked the page action button does not appear