Dust-Me Selectors for Firefox


Version 4.1

Version 4.1 fixes the compatibility issues that arose in Firefox 22:

  1. Replaced uses of nsIPrivateBrowsingService.
  2. Removed uses of nsIGlobalHistory2.
  3. Replaced uses of nsIFaviconService.

However the utilities that replaces these classes don't have all the same functionality, and as a result, the extension can no longer add sitemap pages to the history, nor load favicons for sites which have not been visited or bookmarked before.

Other fixes in this version include:

  1. Fixed a bug in the Spider this page function that prevented the spider URL field from being updated when the dialog is already open.
  2. Fixed a couple of instances of can't access dead object errors.
  3. Fixed a couple of circumstances where the cleaning controls would remain visible when they should have been hidden.

Version 4.1 confirms support for Firefox versions up to 25.x, and retires support for versions earlier than 18.x.

Version 4.0

Version 4.0 is a major upgrade, with many requested new features. I've been through all the comments and emails you've written in the last year, and been able to implement virtually all of the changes you've asked for!

  1. The most significant new feature is the widely-requested cleaning function, which adds a Clean button to each stylesheet group in the Unused selectors tab. The function creates a copy of the stylesheet (leaving the original alone), and you can select whether unused selectors and rules should be commented-out or removed.
  2. This version also overhauls the automation, adding the ability to restrict automation to specific sites, and replacing the existing mutation event with three mutation observers, that allow it to respond to changes in <body> content, <head> content, or document attributes (including mapped properties).
  3. The core scanning process has also been upgraded, adding support for internal stylesheets (i.e. rules inside <style> elements), as well as some new selector filters that make it possible to test for things like dynamic states (such as :hover) and pseudo-elements (such as ::before), which selector queries can't normally match. (A basic form of this behaviour was already implemented, but has been updated and extended into multiple controllable filters.)

Other notable new features and improvements include:

  1. Added a button to the main toolbar, which does the same job as the add-on bar icon, and has the same menu attached to it. This button is now enabled by default, while the add-on bar icon is disabled by default (in line with the general trend away from using the add-on bar).
  2. Added support for spidering XML Sitemap Indexes, and also RSS feeds.
  3. Added a new Storage preference, Delete all stored data when Firefox quits, which effectively deletes all data apart from preferences.
  4. Added another new Storage preference, Treat sub-domains as the same site, which means that (for example) addons.mozilla.org and developer.mozilla.org would both be stored under mozilla.org.
  5. Extended the Spider preference, Don't spider links in HTML sitemaps if [...], so you can specify the attribute name (where previously it was hard-coded to "rel").
  6. Updated the stylesheet parsing to add support for nested @media rules.
  7. Updated conditional-comment parsing to look for <style> elements (where previously it only supported <link> stylesheets), and so that it recognises all documented forms of syntax (e.g. adding support for bracketed & and | conditions, true and false flags, and WindowsEdition version targeting).
  8. Redesigned the Save as CSV option to Export selected data, which now gives you the choice of JSON or CSV export, and now includes line-numbers.
  9. Added some built-in help files — a detailed guide to Preferences (which is opened from its Help button), and a general Getting Started guide (which can be opened from the main menu).
  10. Confirmed support for Firefox versions up to 20.x, and retired support for versions earlier than 14.x.

There's also a number of significant bug-fixes:

  1. Fixed a bug in the spider that would trigger an error when trying to load a site's favicon, which meant that the spider would hang forever when scanning a new site. Thanks to Dr_Barnowl for reporting and fixing that bug.
  2. Fixed a pretty fundamental bug in the spidering logic, whereby stylesheets would be tested on pages that don't include them, having been added to the dataset on an earlier page. This will have resulted in some false-positives, i.e. selectors being marked as used when they're actually unused.
  3. Fixed a bug that could occur when spidering the same sitemap twice, whereby the extension would use unintentionally-saved selectors data, from a dataset that should have been deleted when you pressed Trash this data first. This would have made it seem as though it were loading stylesheets from a stale cache.
  4. Fixed (again) the [#15@dustmeselectors.js:133] bug that could occur when parsing remote stylesheets, caused by attempting to parse them before they've finished loading. A fix for this issue already existed, but was no longer working because the error's name had been changed!
  5. Fixed an automation bug, that would sometimes store data under the wrong host, if automatic scanning was interrupted before it had finished, and then re-started on a different site.
  6. Fixed another automation bug, where opening pages in a background tab would trigger a scan on the front tab again, instead of scanning the one that just opened.

And other changes include:

  1. Storage preferences are now used as part of global host evaluations, which affects two other preferences — the Spider setting Don't spider off-site links in HTML sitemaps (where they affect how link domains are evaluated), and the Automation setting Only scan specific sites (where they affect how hosts are evaluated for restricted automation).
  2. Changed some command-keys to avoid conflicts with the new developer tools in Firefox. Scan this page is now Ctrl+Alt+N (or ⌥⌘N for Mac) while Spider Sitemap is Ctrl+Alt+P (⌥⌘P). There's also a new command-key for Spider this page, which is Ctrl+Shift+Alt+P (⌥⇧⌘P) (i.e. same as Spider Sitemap but with Shift held down), and also a new one for Preferences, which is Ctrl+Alt+, (⌥⌘,).
  3. Updated the spider confirm behaviour, so that whenever you spider a site for which you already have stored data, it will ask you whether to keep or trash that data (where previously it would only do that when re-spidering the same sitemap URL).
  4. Added a new Reporting preference, Show the notification bar, which will show a summary of the spider or scan operation in the browser's notification bar (which is the same thing Firefox uses to tell you about blocked pop-ups). This also has a supplementary preference, Notification bar message priority, that allows you to control how these messages appear, and how they take priority over messages sent by Firefox or other extensions.
  5. Added support for private browsing mode, so that when it's enabled, the spider doesn't add sitemap pages to the history, or save favicons to the cache.
  6. Added a shortcut in the Data dialog to expand or collapse all groups, by holding down the Shift key while expanding or collapsing a single group (by clicking the group heading, or pressing Enter or Space while it's focused).
  7. Improved performance in the Data dialog when viewing large datasets.
  8. Added a context-menu to the Spider Log for sitemap and page URLs, which is a shortcut to Open URL in Firefox.
  9. Automation no longer happens on non-HTML documents such as text files, stylesheets and scripts, which do have a parseable DOM in firefox and that's why automation used to pick them up.
  10. A change to the way the spider loads pages, using a browser loading method that includes a bypass-cache flag, so it never retrieves cached pages (equivalent to force-refreshing each page). As a consequence of this new behaviour, all spider pages are requested with the sitemap URL as their referer.
  11. Refined the way in which selectors data objects are maintained, so that stylesheet groups now consistently show their selectors in source order (where previously, selectors which had been Marked as used or Marked as unused would be listed at end of the group).
  12. Added a new Interface preference, Persist the most recent value in the Sitemap URL textbox, which will save the textbox value when the Spider dialog is closed, then persist and pre-select it when the dialog is opened again (unless it's over-ridden by the Spider this page command).
  13. Added a Show files button in the Preferences dialog's Storage tab, so you can inspect the contents of the extension's data folder.
  14. Many layout and design improvements, notably:
    • Platform-specific styling in all the dialogs.
    • Consistent fonts and button layout between the different dialogs.
    • Implemented proper multi-size icons for the dialogs in Windows.
    • Implemented word-wrap in stylesheet group headers so that long URLs don't cause a horizontal scrollbar.
    • Moved the Data dialog progress-meter to the right of the tabs, so it doesn't squash the menu when it's visible.
    • Added command-key indicators to the toolbar button and the add-on bar icon.
  15. Many language improvements, notably:
    • Find unused selectors is now called Scan this page, and the word scan is now used generally to refer to the page-testing process.
    • The Data and Spider dialogs' primary button now says Close instead of OK, to differentiate them from dialog accept buttons. The latter are used in Preferences, and in confirmation and error dialogs, and can be triggered by pressing Enter; whereas the Data and Spider dialogs are just normal windows, which can be closed with Ctrl + W.
    • For Windows only, Preferences is now referred to as Options.
  16. The Preferences dialog doesn't need to be modal anymore.
  17. Changed the dialog titles so they're easier to identify in window lists — they're now called Dust-Me Data, Dust-Me Spider, Dust-Me Preferences or Dust-Me Options, and Dust-Me Help.
  18. Removed the Disable Dust-Me preference from the main menu and preferences, because you can do that from the Add-ons Manager.
  19. Removed the Ignore query-strings in stylesheet URLs preference, because it was causing a problem whereby server-generated stylesheets would be missing expected content, because they were requested without their crucial query-data.
  20. Various other enhancements.


Find out more


Our internal search engine is currently offline, undergoing some configuration changes in preparation for a major site overhaul. In the meantime, you can still search this site using Google Custom Search.

In this area

Main areas

[brothercake] a round peg in a square hole, that still fits