Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 400,000 packages pre-installed, including jetpack-tab-setwindow with all npm packages installed. Try it out:

var jetpackTabSetwindow = require("jetpack-tab-setwindow")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

jetpack-tab-setwindow v1.0.5

Monkey patch Firefox Addon SDK's Tab class with a method for moving tabs to other windows

JetPack Tab.setWindow

Monkey patch Firefox Addon SDK's Tab class with a method for moving tabs to other windows.

Install

In you addon folder run

npm i jetpack-tab-setwindow --save

Usage

In you addon code include

require('jetpack-tab-setwindow');

That's it!

Now you can call setWindow(window, index) on any SDK tab.

const TABS = require("sdk/tabs");

// Move first tab to the end of second tab's window
TABS[0].setWindow(TABS[1].window, -1)
.then(function (newTab) {
    // newTab is a new object representing TABS[0], but the tab is the same!
    // All states are preserved, even video continues playing.
    // But newTab.id !== TABS[0].id

    // Move second tab to a new window (tear off)
    return TABS[1].setWindow(null);
});

Note

This library uses Addon SDK low-level API, which is not encouraged.

Here is a note from Mozilla's SDK Add-ons website:

Note that directly accessing XUL objects and web content like this means you're no longer protected by the compatibility guarantees made by the SDK's high-level APIs. In particular, your code might not work with multiprocess Firefox.

So use with care.

Tested with Firefox 44 and Nightly 47.

RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free