| Index: popup.js | 
| =================================================================== | 
| --- a/popup.js | 
| +++ b/popup.js | 
| @@ -25,18 +25,33 @@ | 
| var Prefs = require("prefs").Prefs; | 
| var isWhitelisted = require("whitelisting").isWhitelisted; | 
|  | 
| -var tab = null; | 
| +var page = null; | 
|  | 
| function init() | 
| { | 
| -  // Mark page as local to hide non-relevant elements | 
| -  ext.windows.getLastFocused(function(win) | 
| +  ext.pages.query({active: true, lastFocusedWindow: true}, function(pages) | 
| { | 
| -    win.getActiveTab(function(tab) | 
| +    page = pages[0]; | 
| + | 
| +    // Mark page as local to hide non-relevant elements | 
| +    if (!page || !/^https?:\/\//.test(page.url)) | 
| +      document.body.classList.add("local"); | 
| + | 
| +    // Ask content script whether clickhide is active. If so, show cancel button. | 
| +    // If that isn't the case, ask background.html whether it has cached filters. If so, | 
| +    // ask the user whether she wants those filters. | 
| +    // Otherwise, we are in default state. | 
| +    if (page) | 
| { | 
| -      if (!/^https?:\/\//.exec(tab.url)) | 
| -        document.body.classList.add("local"); | 
| -    }); | 
| +      if (isWhitelisted(page.url)) | 
| +        document.getElementById("enabled").classList.add("off"); | 
| + | 
| +      page.sendMessage({type: "get-clickhide-state"}, function(response) | 
| +      { | 
| +        if (response && response.active) | 
| +          document.body.classList.add("clickhide-active"); | 
| +      }); | 
| +    } | 
| }); | 
|  | 
| // Attach event listeners | 
| @@ -57,26 +72,6 @@ | 
| if (!Prefs[collapser.dataset.option]) | 
| document.getElementById(collapser.dataset.collapsable).classList.add("collapsed"); | 
| } | 
| - | 
| -  // Ask content script whether clickhide is active. If so, show cancel button. | 
| -  // If that isn't the case, ask background.html whether it has cached filters. If so, | 
| -  // ask the user whether she wants those filters. | 
| -  // Otherwise, we are in default state. | 
| -  ext.windows.getLastFocused(function(win) | 
| -  { | 
| -    win.getActiveTab(function(t) | 
| -    { | 
| -      tab = t; | 
| -      if (isWhitelisted(tab.url)) | 
| -        document.getElementById("enabled").classList.add("off"); | 
| - | 
| -      tab.sendMessage({type: "get-clickhide-state"}, function(response) | 
| -      { | 
| -        if (response && response.active) | 
| -          document.body.classList.add("clickhide-active"); | 
| -      }); | 
| -    }); | 
| -  }); | 
| } | 
| window.addEventListener("DOMContentLoaded", init, false); | 
|  | 
| @@ -86,7 +81,7 @@ | 
| var disabled = enabledButton.classList.toggle("off"); | 
| if (disabled) | 
| { | 
| -    var host = extractHostFromURL(tab.url).replace(/^www\./, ""); | 
| +    var host = extractHostFromURL(page.url).replace(/^www\./, ""); | 
| var filter = Filter.fromText("@@||" + host + "^$document"); | 
| if (filter.subscriptions.length && filter.disabled) | 
| filter.disabled = false; | 
| @@ -99,13 +94,13 @@ | 
| else | 
| { | 
| // Remove any exception rules applying to this URL | 
| -    var filter = isWhitelisted(tab.url); | 
| +    var filter = isWhitelisted(page.url); | 
| while (filter) | 
| { | 
| FilterStorage.removeFilter(filter); | 
| if (filter.subscriptions.length) | 
| filter.disabled = true; | 
| -      filter = isWhitelisted(tab.url); | 
| +      filter = isWhitelisted(page.url); | 
| } | 
| } | 
| } | 
| @@ -113,7 +108,7 @@ | 
| function activateClickHide() | 
| { | 
| document.body.classList.add("clickhide-active"); | 
| -  tab.sendMessage({type: "clickhide-activate"}); | 
| +  page.sendMessage({type: "clickhide-activate"}); | 
|  | 
| // Close the popup after a few seconds, so user doesn't have to | 
| activateClickHide.timeout = window.setTimeout(ext.closePopup, 5000); | 
| @@ -127,7 +122,7 @@ | 
| activateClickHide.timeout = null; | 
| } | 
| document.body.classList.remove("clickhide-active"); | 
| -  tab.sendMessage({type: "clickhide-deactivate"}); | 
| +  page.sendMessage({type: "clickhide-deactivate"}); | 
| } | 
|  | 
| function toggleCollapse(event) | 
|  |