commit 73401719b0d3952e7428e52109ed33514e523fbc
parent 8f984e130f709b2ff776b9251e792dbafae33b4f
Author: Ryan Wolf <rwolf@borderstylo.com>
Date: Sun, 2 May 2010 23:43:56 -0700
works great except for if a user means to visit page
Diffstat:
1 file changed, 37 insertions(+), 21 deletions(-)
diff --git a/chrome/content/naggerstomper.js b/chrome/content/naggerstomper.js
@@ -1,26 +1,42 @@
-var noscriptnag = /^http:\/\/noscript.net\/\?ver=.*&prev=.*/;
+new function () {
+ // TODO: nice UI for adding patterns
+ var nagRegexes = [
+ /^http:\/\/noscript.net\/\?ver=.*&prev=.*/,
+ ];
-window.addEventListener(
- "load",
- function () {
- gBrowser.tabContainer.addEventListener(
- "TabOpen",
+ var isNag = function (url) {
+ return nagRegexes.some(function (reg) { return url.match(reg); });
+ };
+
+ var closeTabIfNag = function (tab) {
+ var browser = gBrowser.getBrowserForTab(tab);
+ browser.addEventListener(
+ "pageshow",
function (event) {
- var tab = event.target;
- var browser = gBrowser.getBrowserForTab(tab);
- browser.addEventListener(
- "pageshow",
- function (event) {
- var window = event.originalTarget.defaultView;
- if (window.location.href.match(noscriptnag)) {
- gBrowser.removeTab(tab);
- }
- },
- false
- );
+ var url = event.originalTarget.defaultView.location.href;
+ if (url === "about:blank") {
+ return;
+ }
+ if (isNag(url)) {
+ gBrowser.removeTab(tab);
+ }
+ browser.removeEventListener("pageshow", arguments.callee, false);
},
false
);
- },
- false
-);
+ };
+
+ window.addEventListener(
+ "load",
+ function () {
+ gBrowser.tabContainer.addEventListener(
+ "TabOpen",
+ function (event) {
+ closeTabIfNag(event.target);
+ },
+ false
+ );
+ },
+ false
+ );
+}