Rechercher dans l’assistance

Évitez les escroqueries à l’assistance. Nous ne vous demanderons jamais d’appeler ou d’envoyer un SMS à un numéro de téléphone ou de partager des informations personnelles. Veuillez signaler toute activité suspecte en utilisant l’option « Signaler un abus ».

Learn More

userchrome.js: how to get notified when tabs open and close?

  • Aucune réponse
  • 0 a ce problème
more options

I've recently started using the Tree Style Tab extension, and I'm finding it useful, but I'd like it if the list of tabs could be automatically hidden when only one tab is open (and automatically shown when more than one tab is open).

I hoped to write an extension to do this, but opening the sidebar from an extension requires a user gesture, so I suspect I'll have to use a userchrome.js script.

From a "userchrome.js"-like environment (i.e. unsandboxed AutoConfig), I can hide and show the sidebar with `SidebarUI.hide()` and `SidebarUI.show("treestyletab_piro_sakura_ne_jp-sidebar-action")`, and I can examine the tabs open in the current window via `gBrowser.tabs`, but I can't see how to get notified when the number of tabs changes (replacing `gBrowser.tabs` with a proxy doesn't work, for example). I suppose I could just check every few seconds? That feels like a bit of a cop-out, though, and gets more and more inefficient the more windows are open.

There's an API for extensions to receive events when tabs open and close, so clearly this is possible. Where should I be looking for this functionality?

(I also don't know how I would go about unregistering an event listener (or cancelling a setInterval call!) when the window closes, assuming that's necessary to avoid leaking resources – is there an event like `chrome-document-global-created` I could listen for, but that fires during teardown of the window rather than when one is created?)

I've recently started using the Tree Style Tab extension, and I'm finding it useful, but I'd like it if the list of tabs could be automatically hidden when only one tab is open (and automatically shown when more than one tab is open). I hoped to write an extension to do this, but opening the sidebar from an extension requires a user gesture, so I suspect I'll have to use a userchrome.js script. From a "userchrome.js"-like environment (i.e. unsandboxed AutoConfig), I can hide and show the sidebar with `SidebarUI.hide()` and `SidebarUI.show("treestyletab_piro_sakura_ne_jp-sidebar-action")`, and I can examine the tabs open in the current window via `gBrowser.tabs`, but I can't see how to get notified when the number of tabs changes (replacing `gBrowser.tabs` with a proxy doesn't work, for example). I suppose I could just check every few seconds? That feels like a bit of a cop-out, though, and gets more and more inefficient the more windows are open. There's an API for extensions to receive events when tabs open and close, so clearly this is possible. Where should I be looking for this functionality? (I also don't know how I would go about unregistering an event listener (or cancelling a setInterval call!) when the window closes, assuming that's necessary to avoid leaking resources – is there an event like `chrome-document-global-created` I could listen for, but that fires during teardown of the window rather than when one is created?)

Vous devez vous identifier avec votre compte pour répondre aux messages. Veuillez poser une nouvelle question, si vous n’avez pas encore de compte.