Товарищи, приветствую. Если кто знает, подскажите пожалуйста коды таких кнопок: "закрыть все вкладки", "закрепить вкладку", "закрыть вкладки справа".
Закрыть все - имеется в виду, все кроме закрепленных. Плюс, у меня в about:config стоит твик "не закрывать браузер при закрытии последней вкладки", то есть браузер закрываться не должен.
Закрепить - та же команда что и в контекстном меню вкладки.
Закрыть справа - тоже, команда в контекстном меню вкладки. Я нашел тут тему с этой кнопкой, но у меня она закрывает вкладки или по щелчку правой кнопкой мыши, или если левой - то нужно кликать два раза. Можно ли сделать так, чтобы кликать один раз, и всегда левой кнопкой?

закрыть все вкладки

Выделить код

Код:

[...gBrowser.tabs].forEach((tab)=> !tab.pinned && gBrowser.removeTab(tab));

закрыть вкладки справа

Выделить код

Код:

gBrowser.removeTabsToTheEndFrom(gBrowser.mCurrentTab);

закрепить вкладку

Выделить код

Код:

gBrowser.pinTab(gBrowser.mCurrentTab);

Очень круто, спасибо. Всё работает, нажимаю, не могу нарадоваться. У меня есть еще кнопка "закрыть все вкладки кроме активной", так теперь вообще одно удобство.
Единственно, кнопка "закрепить" - есть ли такой код, чтобы и откреплял тоже, нажатием на ту же кнопку?

Openstar пишет

Единственно, кнопка "закрепить" - есть ли такой код, чтобы и откреплял тоже, нажатием на ту же кнопку?

Выделить код

Код:

var currTab = gBrowser.mCurrentTab;
currTab.pinned ? gBrowser.unpinTab(currTab) : gBrowser.pinTab(currTab);

Ну ваще, магия просто ) Спасибо.

закрыть вкладки справа
gBrowser.removeTabsToTheEndFrom(gBrowser.mCurrentTab);

А можно кроме указанного адреса(адресов) или лэйбла?

questman

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0D%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EClose%20Tabs%20to%20the...%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDoAABSCAABFVgAADqXAAAXb9daH5AAAAEMSURBVHjazNO9SgNREAXgjdjE0uCDBBtryQtYWcQfRF/iwClOZR/ULhZWgqX4BmuKiEUgbyBGjChCqoRgxmYWhmWTFNkixRSXnfnmcC+bmFlSRiXrB4GKVQP1CGoEygpqBOoJ1E6cK4Iuw9DfHMxAtZZBHVAzUANQbVAfPjgAdQdq6OfXZdA3qCmoG1AVUGeg+qBOzCwBdeuLfhdB275t5knOHdsDtQnqOCS0eE95aD93Dy+g6p6kDqrrS7LvjXnQVWh6A3XgiXYdOwL1Hnqu81AV1CGocWh6ALUBqgmqB+rC0XZINQF1Cmorg9KC5/1x7NPPQ1D3oL4KetMMslWrdChdEXpe07+/LOh/AGypGZE0h3H2AAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.setAttribute%28%22context%22%2C%20%22%22%29%3B%0Athis.onclick%20%3D%20e%20%3D%3E%20%7B%0A%20%20%20%20var%20tab%20%3D%20gBrowser.selectedTab%2C%20pinned%20%3D%20tab.pinned%2C%20ignored%20%3D%20%5B...self.Help.toLowerCase%28%29.split%28%27%5Cn%27%29%5D%3B%0A%20%20%20%20if%20%28pinned%20%26%26%20%21e.button%29%20return%3B%0A%20%20%20%20if%20%28e.button%20%3D%3D%202%20%26%26%20%28e.ctrlKey%20%7C%7C%20e.shiftKey%29%29%20%7B%0A%20%20%20%20%20%20%20%20gShowPopup%28this%29%3B%20return%3B%0A%20%20%20%20%7D%0A%20%20%20%20var%20tabs%20%3D%20gBrowser.visibleTabs.filter%28tab%20%3D%3E%20%21tab.pinned%20%26%26%20%28ignored.indexOf%28tab.label.toLowerCase%28%29%29%20%3D%3D%20-1%29%29%3B%0A%20%20%20%20if%20%28%21pinned%29%20%7B%0A%20%20%20%20%20%20%20%20var%20index%20%3D%20tabs.indexOf%28tab%29%3B%0A%20%20%20%20%20%20%20%20switch%28e.button%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%200%3A%20tabs%20%3D%20tabs.slice%280%2C%20index%29%3B%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%201%3A%20tabs.splice%28index%2C%201%29%3B%20break%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20case%202%3A%20tabs%20%3D%20tabs.slice%28index%20+%201%29%3B%20break%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20for%28var%20tab%20of%20tabs%29%20gBrowser.removeTab%28tab%2C%20%7Banimate%3A%20true%2C%20byMouse%3A%20false%7D%29%3B%0A%7D%0Athis.tooltipText%20%3D%20%22%u041B%u041A%u041C%3A%20%u0417%u0430%u043A%u0440%u044B%u0442%u044C%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0441%u043B%u0435%u0432%u0430%20%5Cn%u0421%u041A%u041C%3A%20%u0417%u0430%u043A%u0440%u044B%u0442%u044C%20%u0434%u0440%u0443%u0433%u0438%u0435%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%5Cn%u041F%u041A%u041C%3A%20%u0417%u0430%u043A%u0440%u044B%u0442%u044C%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0441%u043F%u0440%u0430%u0432%u0430%22%3B%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%5D%5D%3E%3C/code%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5B%u0424%u043E%u0440%u0443%u043C%20Mozilla%20%u0420%u043E%u0441%u0441%u0438%u044F%0A%u041A%u043E%u043C%u043F%u044C%u044E%u0442%u0435%u0440%u043D%u044B%u0439%20%u0444%u043E%u0440%u0443%u043C%20Ru.Board%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Из кнопки Dumby.
ЛКМ: Закрыть вкладки слева от текущей (кроме защищенных и закрепленных).
СКМ: Закрыть все вкладки кроме текущей (и защищенных/закрепленных).
ПКМ: Закрыть вкладки справа от текущей (кроме защищенных и закрепленных), с shift или ctrl - открыть меню кнопки.
Названия (label) защищенных вкладок класть во вкладку "Помощь", каждую с новой строки. Название должно быть полным, но не зависимо от регистра.
Как с адресами сделать - не придумал.

turbot пишет

Из кнопки Dumby.
ЛКМ: Закрыть вкладки слева от текущей (кроме защищенных и закрепленных).
СКМ: Закрыть все вкладки кроме текущей (и защищенных/закрепленных).
ПКМ: Закрыть вкладки справа от текущей (кроме защищенных и закрепленных), с shift или ctrl - открыть меню кнопки.
Названия (label) защищенных вкладок класть во вкладку "Помощь", каждую с новой строки. Название должно быть полным, но не зависимо от регистра.
Как с адресами сделать - не придумал.

Просто прелесть!
Спасибо, всё чётко работает.

questman
Вот еще, для пущей прелести (замените инициализацию):

Выделить код

Код:

this.setAttribute("context", "");
this.tooltipText = "ЛКМ: Закрыть вкладки слева \nСКМ: Закрыть другие вкладки \nПКМ: Закрыть вкладки справа \n\Игнорируемые вкладки:\n" + self.Help;
this.onclick = e => {
    var tab = gBrowser.selectedTab, pinned = tab.pinned, h = self.Help.toLowerCase(), ignored = [...h.split('\n')];
    if (pinned && !e.button) return;
    if (e.button == 2 && (e.ctrlKey || e.shiftKey)) {
        gShowPopup(this); return;
    }
    if (e.altKey) {
        var label = tab.label.toLowerCase().replace(/\t/g, "	").replace(/\n/g, "
").replace(/\r/g, "
");
        var link = custombuttons.makeButtonLink("edit", _id);
        var param = custombuttons.cbService.getButtonParameters(link);
        param = param.wrappedJSObject || param;
        if (e.button == 0) param.help = param.help.toLowerCase() + '\n' + label;
        else param.help = param.help.toLowerCase().replace('\n' + label, '').replace(label + '\n', '');
        custombuttons.cbService.installButton(param);
        return;
    }
    var tabs = gBrowser.visibleTabs.filter(tab => !tab.pinned && (ignored.indexOf(tab.label.toLowerCase()) == -1));
    if (!pinned) {
        var index = tabs.indexOf(tab);
        switch(e.button) {
            case 0: tabs = tabs.slice(0, index); break;
            case 1: tabs.splice(index, 1); break;
            case 2: tabs = tabs.slice(index + 1); break;
        }
    }
    for(var tab of tabs) gBrowser.removeTab(tab, {animate: true, byMouse: false});
}

Alt + ЛКМ на кнопке - добавляет активную вкладку в игнорируемые, Alt + ПКМ - удаляет активную вкладку из игнорируемых. (Также подсмотрено в другой кнопке Dumby)
В подсказке кнопки будет выводиться список игнорируемых.

turbot
отличная кнопка,работает хорошо, за исключением 1 минуса. если скажем вкладки слева защищены или закреплены то при закрытие все вкладок слева ,он видимо делает какой то круг и закрывает все вкладки справа,типа от того что слева не может..

Зачем это

Выделить код

Код:

this.setAttribute("context", "");

нечасто вижу, но иногда вижу в кнопках. Что-для-чего?

mokujin пишет

Зачем это

Выделить код

Код:

this.setAttribute("context", "");

нечасто вижу, но иногда вижу в кнопках. Что-для-чего?

Что бы заблокировать дефолтный ПКМ на кнопке.

Выделить код

Код:

this.setAttribute("context", "");
this.onclick = e => {
    var tab = gBrowser.selectedTab, pinned = tab.pinned, ignored = [...self.Help.toLowerCase().split('\n')];
    if (pinned && !e.button) return;
    if (e.button == 2 && (e.ctrlKey || e.shiftKey)) {
        gShowPopup(this); return;
    }
    var tabs = gBrowser.visibleTabs.filter(tab => !tab.pinned && (ignored.indexOf(tab.label.toLowerCase()) == -1));
    if (!pinned) {
        var index = tabs.indexOf(tab);
        switch(e.button) {
            case 0: tabs = tabs.slice(0, index); break;
            case 1: tabs.splice(index, 1); break;
            case 2: tabs = tabs.slice(index + 1); break;
        }
    }
    for(var tab of tabs) gBrowser.removeTab(tab, {animate: true, byMouse: false});
}
this.tooltipText = "ЛКМ: Закрыть вкладки слева \nСКМ: Закрыть другие вкладки \nПКМ: Закрыть вкладки справа";

Помогите, пожалуйста.
Хотелось бы, чтобы СКМ закрывала все вкладки.
Спасибо.

Quartz1t пишет

Хотелось бы, чтобы СКМ закрывала все вкладки.

Выделить код

Код:

this.setAttribute("context", "");
this.onclick = e => {
    var tab = gBrowser.selectedTab, pinned = tab.pinned, ignored = [...self.Help.toLowerCase().split('\n')];
    if (pinned && !e.button) return;
    if (e.button == 2 && (e.ctrlKey || e.shiftKey)) {
        gShowPopup(this); return;
    }
    var tabs = gBrowser.visibleTabs.filter(tab => !tab.pinned && (ignored.indexOf(tab.label.toLowerCase()) == -1));
    if (!pinned) {
        var index = tabs.indexOf(tab);
        switch(e.button) {
            case 0: tabs = tabs.slice(0, index); break;
            case 2: tabs = tabs.slice(index + 1); break;
        }
    }
    for(var tab of tabs) gBrowser.removeTab(tab, {animate: true, byMouse: false});
}
this.tooltipText = "ЛКМ: Закрыть вкладки слева \nСКМ: Закрыть другие вкладки \nПКМ: Закрыть вкладки справа";

Спасибо. Кнопка - мечта. Всё отлично работает.

bunda1 пишет

nСКМ: Закрыть другие вкладки

В описании поправить на "Закрыть все вкладки".

bunda1, а можно кнопочку "Закрыть другие вкладки" по ЛКМ, без всего остального?

_zt
Вкладка - Код

Выделить код

Код:

[...gBrowser.tabs].forEach(function(tab) !tab.selected && gBrowser.removeTab(tab) );

villa7
Спасибо, так удобнее, чем через контекстное меню.
Три кнопочки над вертикальной панелью вкладок - 3d8e2ccae28b.png.