Themes are not dynamic, so the solution is not straightforward.
It's possible to create the feature using the management API. At least three extension are needed:
- The main extension for switching themes.
- Theme #1, theme #2 etc (an extra extension for every additional theme).
How to
- Create a theme - See the Chrome themes documentation.
- Bind a chrome.tabs.onUpdated event to listen for tab changes, and possibly save the state of known "theme-tabs" in a hash (by tabId). Don't forget to remove the tabId when the tab's URI is not "special" any more, using the
delete
operator.
- Create another extension, with a background script.
Add a chrome.tabs.onActivated Warning: See below event, to listen for tab changes. This event is passed a windowId and tabId. Use the hash, created in step 2, to check whether the theme has to be changed or not.
- If the URL matches a certain pattern, activate the new theme using the chrome.management.setEnabled method.
Alternative approach for step 3-4: Use Content scripts to call a method the background page. The match patterns can then be set in the manifest file, at the "content_scripts"
, "matches"
section.
Warning: The onActivated
event was not supported prior Chrome 18. Before Chrome 18, the event was called onActiveChanged
.
The extension as described in steps 2-4 requires the following permissions: