всем привет!
Хотелось бы иметь кнопку на панели, которая отображает непрочитанные сообщения "одноклассники" "вконтакте" и самое важное "web агет майл.ру".
но, самое главное чтоб при нажатии кнопки выскакивало popup окно (которое привязанно к кнопке) , и это окно я смог бы сам выставлять желаемые размеры "400х600 рх", да и адрес хотелось бы мобильной версии сайта задавать....и так же как и в нормальном окне вести переписку и т.д. дело в том что я не программист и прошу прощения - если что не так....
Заранее благодарен!

Хотелось бы иметь кнопку на панели, которая отображает непрочитанные сообщения "одноклассники" "вконтакте" и самое важное "web агет майл.ру".

Friedrich ,X-notifier :angel:

но, самое главное чтоб при нажатии кнопки выскакивало popup окно (которое привязанно к кнопке)

Для гуглопочты есть такое >gpum - Google mail Popup Unread Manager

и так же как и в нормальном окне вести переписку

Gmail panel

Ещё Simple Mail (Обсуждение расширений»Simple Mail) , но там вроде без всплывающих окон :sick:

спасибо за быстрый ответ! но как то не удобное приложение для меня....
простой привязанный popup на одной кнопке, а всё остальное как и в нормальном браузере....ведь адрес мобильной версии сайта не сложно будет задать, да и размеры окна не сложно вбить....и этих кнопок можно создавать кучу, уже ведь аська есть вебверсия и вебагент, может и скайп будет веб версия....всё меньше всякого инсталлировать придется....по мне так кнопку в mozilla сделать и пользоваться веб версией - чем инсталировать всю прогу....а там глядишь и разработчики сайтов начнут расширения писать.....еще раз спасибо

Friedrich, Заголовок про кнопку я и не заметил :blush: :angel:


а там глядишь и разработчики сайтов начнут расширения писать.....

Теперь в [firefox] появилась встроенная возможность для интеграции с социальными сетями > пост № 33

Социальные API обладают бесконечным потенциалом для интеграции социальных сетей, электронной почты, финансы, музыка, облака возможностей, услуг, списки дел, спорта, новостей и других приложений в ваш  Firefox. Мы разработали Социальные API, чтобы сделать его более простым и удобным в использовании Web, как вы хотите. Вскоре мы добавим еще больше возможностей для интеграции ваших любимых веб-служб в ваш  Firefox.

я вот нашел на форуме тему, вот точно так сделать элемент попап, но только чтоб задавать адрес любого сайта, дабавлять иеонку, ну и сами размеры окна выставлять так как мне хотелось бы:)
http://forum.mozilla-russia.org/viewtopic.php?pid=502944
жаль что я деревянный в программировании:lol:

Friedrich,Я уже как-то пытался затронуть темку popup применительно к кнопочкам > № 2382, но настойчивости не проявил - показалось что особо не заинтересовала она  мастеров кнопкотворения :angel:  А вообще да, попробуйте задать вопрос в той теме - шанс получить желаемое всегда есть  ... если только не отправят делать удочку :lol:
Уроки стилистики (CSS)

Инструменты для создателей Custom Buttons

нашел для Хрома то что я именно и хотел!
Автор UlaUla
Вот как такой шаблон для Firefox сделать?
Кто нибудь помогите плз.....

Friedrich пишет

Вот как такой шаблон для Firefox сделать?
Кто нибудь помогите плз.....

http://habrahabr.ru/post/146594/

не смог понять причем тут индикаторы, к тому чтоб просто всплывало попап с адресом страницы???

Friedrich пишет

не смог понять причем тут индикаторы, к тому чтоб просто всплывало попап с адресом страницы???

Наверно ни при чём, извини.

Привет!Мне очень нужна кнопка,которая заменяет собой нажатие на клавиатуре комбинации клавиш.Помогите кто знает,заранее благодарен!

Комбинация клавиш должна меняться по усмотрению в настройках кнопки а делать она должна простые стандартные действия выполняемые с клавиатуры.

dorosholeg
конкретнее. Одна кнопка - одно действие. Какое действие? Иначе «Сделать зашибись!»

SendInfo пишет

Какое действие? Иначе «Сделать зашибись!»

тоже отметили смерть CB ??

feas пишет

тоже отметили смерть CB ??

NO...Чистое совпадение.

Я ищу кнопку которая позволит мне при нажатии на кнопку клавиатуры- происходил клик левой кнопки мышки по заданным мною координатам,помогите кто знает,благодарю!

dorosholeg пишет

Я ищу кнопку которая позволит мне при нажатии на кнопку клавиатуры- происходил клик левой кнопки мышки по заданным мною координатам,помогите кто знает,благодарю!

Напиши конкретней.

Ищу доп. кнопки для быстрого возвращения (вперед и назад) в панели управления. Что-то не найду. :/

а можно как-нибудь сделать так, чтобы просто парсил выходной JSON. вот тут, если человек залогинен будет возвращаться JSON типа

Выделить код

Код:

{msg_count: x}

где x — число сообщений?

okkamas_knife пишет

dimon4ezzz
и в чём проблема то?
берёшь и парсишь хоть регулярками хоть сплитом..

дело в том, что не умею я. знаю, что можно так, а как реализовать?

ищу//помогите сделать кнопочку которая бы
копировала  URL открытой вкладки
писала его либо в файл либо как в кнопкеБлокнот в вкладке создавала вкладку
при повторном клике по кнопке не переписывало файл//не создавало новый ,а дополняло имеющийся
p.s.
всего то
но моих знаний не хватает увы и для этого

sotvictor пишет

знаний не хватает

А не нужно никаких знаний. Там прямо готовая функция есть.
Можно что-нибудь модное попробовать, на Windows вроде работает.
(нужен путь к уже́ существующему файлу)

скрытый текст

Выделить код

Код:

const path = "";
const eol = "\n";

Task.spawn(function() {
    var file = yield OS.File.open(path, {write: true});
    yield file.write(new TextEncoder().encode(gBrowser.currentURI.spec + eol));
    yield file.close();
}).then(null, Cu.reportError);

Помогите найти кнопку "Закрыть вкладки справа" "Close right tabs from current", раньше была в разделе "Готовые кнопки для Custom Buttons"?

dorosholeg пишет

Помогите найти кнопку "Закрыть вкладки справа" "Close right tabs from current", раньше была в разделе "Готовые кнопки для Custom Buttons"?

Кнопка на три клика, ЛКМ, СКМ, ПКМ -соотв. закрываюцца вкл. слева, все кроме активной, справа.

Выделить код

Код:

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%3ESpeedCloseTabs%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABEAAAARCAYAAAA7bUf6AAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFCSURBVHjarFE7TsNAEH27ygFwFAkJUcMBDKlD4c5pE8miIyegymGS1hJ1fIoEDkCPkFa2+PgCy8xmbCzvJgLBk55n/PZ5NH4LawFiRJzZCbUWsWiHGNtb55vJd9AAImKCSzxgj0QYyxmkxp0z4Mb5uY8UT8QJCaf0ekY8l8rv97ii55MbsMYjPqkzxFfii9RnzDVUu0EIw171QQtoWMyPDHnrVR8f9H0b6gW1+2CXxEQCjjrBx6IvXbCT73DxH7fDwaJzA0NZ/f3IL3o+RbR9Fw1WSv1cH7Cy225b4Xo8BhurqvJWUGpkQ37NAjeN0DWEEPIPjDEoNhukJHCFMc5Q13VwSMivWUynU6xXK1eNDCnL0mMzpO9XfGssNLhbLFzaRVF4W6Rp6lIN+W1o7TzPPS3LsuAvKjJb/BEHN/kNvgQYAML08vlxNjfkAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.onclick%20%3D%20function%28e%29%20%7B%0A%09var%20br%20%3D%20getBrowser%28%29%3B%0A%09var%20cTab%20%3D%20br.mCurrentTab%3B%0A%0A%09switch%28e.button%29%20%7B%0A%09%09case%200%3A%0A%09%09%09var%20tabs%20%3D%20br.mTabContainer.childNodes%3B%0A%09%09%09var%20left%20%3D%20false%3B%0A%09%09%09for%28var%20i%20%3D%20tabs.length%20-%201%3B%20i%20%3E%3D%200%3B%20--i%29%20%7B%0A%09%09%09%09if%28left%29%0A%09%09%09%09%09br.removeTab%28tabs%5Bi%5D%29%3B%0A%09%09%09%09if%28tabs%5Bi%5D%20%3D%3D%20cTab%29%0A%09%09%09%09%09left%20%3D%20true%3B%0A%09%09%09%7D%0A%09%09break%3B%0A%09%09case%201%3A%0A%09%09%09br.removeAllTabsBut%28br.mCurrentTab%29%3B%0A%09%09break%3B%0A%09%09case%202%3A%0A%09%09%09if%28e.shiftKey%20%7C%7C%20e.ctrlKey%20%7C%7C%20e.altKey%20%7C%7C%20e.metaKey%29%0A%09%09%09%09break%3B%0A%09%09%09e.preventDefault%28%29%3B%0A%09%09%09var%20tabs%20%3D%20br.mTabContainer.childNodes%3B%0A%09%09%09for%28var%20i%20%3D%20tabs.length%20-%201%3B%20i%20%3E%3D%200%3B%20--i%29%20%7B%0A%09%09%09%09if%28tabs%5Bi%5D%20%3D%3D%20cTab%29%0A%09%09%09%09%09break%3B%0A%09%09%09%09br.removeTab%28tabs%5Bi%5D%29%3B%0A%09%09%09%7D%0A%09%7D%0A%7D%0A//%20Hide%20context%20menu%20in%20Linux%3A%0Athis.onmousedown%20%3D%20function%28e%29%20%7B%0A%09if%28e.button%20%3D%3D%202%20%26%26%20%21e.shiftKey%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%29%20%7B%0A%09%09var%20cm%20%3D%20document.getElementById%28this.getAttribute%28%22context%22%29%29%3B%0A%09%09cm.collapsed%20%3D%20true%3B%0A%09%09var%20func%20%3D%20function%28%29%20%7B%0A%09%09%09cm.removeEventListener%28%22popupshowing%22%2C%20func%2C%20false%29%3B%0A%09%09%09setTimeout%28function%28%29%20%7B%20cm.hidePopup%28%29%3B%20cm.collapsed%20%3D%20false%3B%20%7D%2C%200%29%3B%0A%09%09%7D%3B%0A%09%09cm.addEventListener%28%22popupshowing%22%2C%20func%2C%20false%29%3B%0A%09%7D%0A%7D%0Athis.tooltipText%20%3D%20this.Help%3B%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%u041B%u041A%u041C%20-%20%u0417%u0430%u043A%u0440%u044B%u0442%u044C%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0421%u041F%u0420%u0410%u0412%u0410%20%u043E%u0442%20%u0430%u043A%u0442%u0438%u0432%u043D%u043E%u0439%0A%u041F%u041A%u041C%20-%20%u0417%u0430%u043A%u0440%u044B%u0442%u044C%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%20%u0421%u041B%u0415%u0412%u0410%20%u043E%u0442%20%u0430%u043A%u0442%u0438%u0432%u043D%u043E%u0439%0A%u0421%u041A%u041C%20-%20%u0417%u0430%u043A%u0440%u044B%u0442%u044C%20%u0412%u0421%u0415%20%u043A%u0440%u043E%u043C%u0435%20%u0430%u043A%u0442%u0438%u0432%u043D%u043E%u0439%0A--------------------------%0ACTRL%20+%20%u041F%u041A%u041C%20-%20%u0432%u044B%u0437%u043E%u0432%20%u043C%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Init

скрытый текст

Выделить код

Код:

this.onclick = function(e) {
    var br = getBrowser();
    var cTab = br.mCurrentTab;

    switch(e.button) {
        case 0:
            var tabs = br.mTabContainer.childNodes;
            var left = false;
            for(var i = tabs.length - 1; i >= 0; --i) {
                if(left)
                    br.removeTab(tabs[i]);
                if(tabs[i] == cTab)
                    left = true;
            }
        break;
        case 1:
            br.removeAllTabsBut(br.mCurrentTab);
        break;
        case 2:
            if(e.shiftKey || e.ctrlKey || e.altKey || e.metaKey)
                break;
            e.preventDefault();
            var tabs = br.mTabContainer.childNodes;
            for(var i = tabs.length - 1; i >= 0; --i) {
                if(tabs[i] == cTab)
                    break;
                br.removeTab(tabs[i]);
            }
    }
}
// Hide context menu in Linux:
this.onmousedown = function(e) {
    if(e.button == 2 && !e.shiftKey && !e.ctrlKey && !e.altKey && !e.metaKey) {
        var cm = document.getElementById(this.getAttribute("context"));
        cm.collapsed = true;
        var func = function() {
            cm.removeEventListener("popupshowing", func, false);
            setTimeout(function() { cm.hidePopup(); cm.collapsed = false; }, 0);
        };
        cm.addEventListener("popupshowing", func, false);
    }
}
this.tooltipText = this.Help;


Help
скрытый текст

Выделить код

Код:

ЛКМ - Закрыть вкладки СЛЕВА от активной
ПКМ - Закрыть вкладки СПРАВА от активной
СКМ - Закрыть ВСЕ кроме активной
--------------------------
CTRL + ПКМ - вызов меню кнопки


зы. Но в этой кнопке есть маленькая неприятность - она закрывает и закрепленные вкладки(те шо слева). Могет доделает кто, чтоб игнорировались закрепленные(pinned) вкладки. былоб отлично.

jars пишет

Но в этой кнопке есть маленькая неприятность - она закрывает и закрепленные вкладки(те шо слева). Могет доделает кто, чтоб игнорировались закрепленные(pinned) вкладки. былоб отлично.

Выделить код

Код:

this.onclick = function(e) {
  // ЛКМ - закрыть все вкладки слева от активной, кроме закрепленных
  if ( e.button == 0 ) {
    closeTabsToTheLeft = function(tab) {
      var tc = [], tabs = gBrowser.visibleTabs, t;
      for(t=0;tabs[t]!=tab;t++)
        if (!tabs[t].pinned)
          tc.push(tabs[t]);

      for(t=0;t<tc.length;t++)
        gBrowser.removeTab(tc[t], {animate: true});
    }
    closeTabsToTheLeft(gBrowser.mCurrentTab);
  };
  // СКМ - закрыть все вкладки, кроме активной и закрепленных
  if ( e.button == 1 ) {
    gBrowser.removeAllTabsBut(gBrowser.mCurrentTab);
  };
  // ПКМ - закрыть вкладки справа от активной, кроме закрепленных/показать меню кнопки с зажатой клавишей-модификатором
  if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) {
    e.preventDefault();
    e.stopPropagation();
    gBrowser.removeTabsToTheEndFrom(gBrowser.mCurrentTab);
  };
};

upd: чуть поправил.

turbot пишет

upd: чуть поправил.

Разреши поделиться наблюдениями

скрытый текст

// СКМ - закрыть все вкладки, кроме активной и закрепленных

Если активная вкладка pinned,
то никакая вкладка закрыта не будет.

// ПКМ - закрыть вкладки справа от активной, кроме закрепленных ...

Если активная вкладка pinned,
то будут закрыты все вкладки справа, включая те вкладки, которые pinned.

... /показать меню кнопки с зажатой клавишей-модификатором
  if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) {
    e.preventDefault();
    e.stopPropagation();

У jars в коде есть блок «// Hide context menu in Linux:».
Я изловчился проверить на Ubuntu 15.04.
И действительно, — там «e.preventDefault();» не помогает.
То есть: CB контекстное меню всё равно появляется.

В общем, как тебе такой вариант ?

Выделить код

Код:

this.setAttribute("context", "");
this.onclick = e => {
    var tab = gBrowser.selectedTab, pinned = tab.pinned;
    if (pinned && !e.button) return;
    if (e.button == 2 && (e.ctrlKey || e.shiftKey)) {
        gShowPopup(this); return;
    }
    var tabs = gBrowser.visibleTabs.filter(tab => !tab.pinned);
    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);
        }
    }
    for(var tab of tabs) gBrowser.removeTab(tab, {animate: false, byMouse: false});
}

Dumby пишет

В общем, как тебе такой вариант ?

Эээ, ну как мне с вами спорить, если я с трудом понимаю, что сам делаю?.. :D Идеально, спасибо. :)

turbot
Dumby
Красавцы! Действительно идеально.

Dumby пишет

В общем, как тебе такой вариант ?

Выделить код

Код:

this.setAttribute("context", "");
this.onclick = e => {
    var tab = gBrowser.selectedTab, pinned = tab.pinned;
    if (pinned && !e.button) return;
    if (e.button == 2 && (e.ctrlKey || e.shiftKey)) {
        gShowPopup(this); return;
    }
    var tabs = gBrowser.visibleTabs.filter(tab => !tab.pinned);
    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);
        }
    }
    for(var tab of tabs) gBrowser.removeTab(tab, {animate: false, byMouse: false});
}

Здравствуйте, а как тут кнопки левую и правую поменять местами, левая кнопка на мышке глючит - переназначил в виндовс, вот теперь код при нажатии на левую клавишу - закрывает вкладки справа от активной.

fokanik пишет

кнопки левую и правую поменять местами

Выделить код

Код:

switch(e.button) {
            case 0: tabs = tabs.slice(index + 1);
            case 1: tabs.splice(index, 1); break;
            case 2: tabs = tabs.slice(0, index); break;
        }
turbot пишет
Выделить код

Код:

switch(e.button){
case 0: tabs = tabs.slice(index + 1); 
case 1: tabs.splice(index, 1); break;
case 2: tabs = tabs.slice(0, index); break; }

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

fokanik
Щас проверил у себя, работает как надо, кнопки меняются без перезапуска бравзера. Смотри внимательно что да как делал.
зы. мыша подпаяй :D

turbot пишет
Выделить код

Код:

case 0: tabs = tabs.slice(index + 1);
            case 1: tabs.splice(index, 1); break;

Там «break;» убежал, после последнего case он не нужен, а вот в начале или в середине – очень даже.

Что-то у меня вообще все заглючило, жму на кноку - нет реакции, только менюшка - редактировать открывается, ща старую проверю кнопку. А может ей net.framevork надо какой-нить? :sick:

31-07-2015 19:50:13

fokanik пишет

Там «break;» убежал, после последнего case он не нужен, а вот в начале или в середине – очень даже.

Я break туда сразу впихнул, только вот как - с ошибками:

Выделить код

Код:

case 0: tabs = tabs.slice(index + 1)break;
jars пишет

Щас проверил у себя, работает как надо, кнопки меняются без перезапуска бравзера. Смотри внимательно что да как делал.
зы. мыша подпаяй :D

Ура, получилось :cool:

Всем спасибо!

Можно ли создать такую кнопку при нажатии на которую отображаются свойства закладки открытой в данный момент?

dorosholeg пишет

Можно ли создать такую кнопку при нажатии на которую отображаются свойства закладки открытой в данный момент?
                    Отредактировано dorosholeg (Сегодня 11:51:56)

Клик по фавиконке сайта открывает свойства страницы.

Ultima2m пишет

Клик по фавиконке сайта открывает свойства страницы.

По-дефолту фавиконок в адресной строке вообще нет. И давно. Это у вас CTR, либо кнопки [CB]Вернуть иконки сайтов в адресной строке + Autocopy+3.

dorosholeg

скрытый текст
Если указанные выше варианты не подходят, то во вкладку "код":

Выделить код

Код:

gIdentityHandler.handleMoreInfoClick(event);

либо в инициализацию любой кнопки:

Выделить код

Код:

document.getElementById("page-proxy-favicon").setAttribute('oncontextmenu', 'if (event.target == this && !event.ctrlKey && !event.shiftKey) {event.preventDefault(); event.stopPropagation(); gIdentityHandler.handleMoreInfoClick(event);}');

- "информация о странице" будет открываться правым кликом по значку идентификации сайта (замочек/глобус).

Доброго времени.Может не по теме -извините.
Есть такая кнопка или можно создать?(не нашел на форуме)
Типа:
Scroll To Top или Кнопка "Вверх"

KOMMEHTATOP
№86
или отдельно кнопка Scroll2Top с кодом
Код

Выделить код

Код:

content.scrollTo(0, 0);
KOMMEHTATOP пишет

Есть такая кнопка или можно создать?(не нашел на форуме)
Типа:
Scroll To Top или Кнопка "Вверх"

Настрой жесты. Гораздо удобнее.

Доброго времени.
Очень не хватает кнопки  радио
1.Чтоб можно было редактировать радиостанции.
2.И если возможно регулировка громкости.
Вот похожее расширение для Opera - Хрома-Mozilla Firefox.
Snimok2.1445586066.jpg или Bezymyannyj-1.1445586699.jpg

Добрый день. У меня несколько профилей мозилы, как мне их пронумеровать чтобы различать. Нужна такая кнопка чтобы я мог на ней написать цифры:1, 2, 3 и т.д., спасибо.

dorosholeg
В расширении Speed Dial [FVD] можно использовать несколько профилей.
https://addons.mozilla.org/Ru/firefox/a … peed-dial/

Нужна кнопка, чтоб можно было таскать мышкой отдельно открытые большие (больше окна браузера) картинки. Желательно при этом скрывать скролбар.

ifln пишет

Нужна кнопка, чтоб можно было таскать мышкой отдельно открытые большие (больше окна браузера) картинки. Желательно при этом скрывать скролбар.

Непонятно.

bunda1
Привет!
Если открыть большую картинку в отдельной вкладке, под курсором будет +
После нажатия +, чтобы сдвинуть ее вниз/вверх/вправо/влево надо пользоваться скролом. Я хочу тягать ее мышкой.
- (уменьшить) желателен, но не обязателен.
Можно так сделать?

ifln пишет

Можно так сделать?

Попробовал. Если и у тебя сработает, то стоит отметить,
что в неэлектролизисных окнах код не дружит с панелями
типа девтулс, сайдбар, абп, но, надеюсь, тебя это не сильно огорчит.

скрытый текст

Выделить код

Код:

({
    init(destroyMessageName) {
        this.destroyMessageName = destroyMessageName;
        var code = this.frameScriptCode.replace(/%MSG%/g, destroyMessageName);
        this.frameScriptURL = "data:," + encodeURIComponent(code);

        messageManager.loadFrameScript(this.frameScriptURL, true);
        addDestructor(this.destroy, this);
    },
    destroy() {
        messageManager.removeDelayedFrameScript(this.frameScriptURL);
        messageManager.broadcastAsyncMessage(this.destroyMessageName);
    },
    frameScriptCode: `
    ({
        init() {
            addEventListener("dragstart", this, true);
            addMessageListener("%MSG%", this);
        },
        receiveMessage() {
            removeEventListener("dragstart", this, true);
            removeMessageListener("%MSG%", this);
        },
        handleEvent(e) {
            this[e.type](e);
        },
        dragstart(e) {
            if (
                e.target.ownerDocument.mozSyntheticDocument
                && e.target instanceof content.HTMLImageElement
                && (content.scrollMaxX || content.scrollMaxY)
                && !e.ctrlKey && !e.shiftKey
                && content.getSelection().isCollapsed
        
            ) {
                this.stopEvent(e);
                this.initScroll(e);
            }
        },
        initScroll(e) {
            this.image = e.target;
            this.x = e.clientX; this.y = e.clientY;

            this.image.style.cursor = "grab";
            setTimeout(img => img.style.cursor = "grabbing", 100, this.image);

            addEventListener("mousemove", this, true);
            addEventListener("mouseup", this, true);
            addEventListener("click", this, true);
        },
        destroyScroll() {
            if (!Components.utils.isDeadWrapper(this.image))
                this.image.style.cursor = "";

            removeEventListener("mousemove", this, true);
            removeEventListener("mouseup", this, true);
            removeEventListener("click", this, true);
        },
        mousemove(e) {
            var dx = this.x - e.clientX; this.x = e.clientX;
            var dy = this.y - e.clientY; this.y = e.clientY;
            content.scrollBy(dx, dy);
        },
        mouseup(e) {
            this.stopEvent(e);
            if (e.target != this.image) this.destroyScroll();
        },
        click(e) {
            this.stopEvent(e);
            this.destroyScroll();
        },
        stopEvent(e) {
            e.preventDefault();
            e.stopPropagation();
            e.stopImmediatePropagation();
        }
    }).init();`
}).init(`CB${_id.slice(20)}:IflnScroll:Destroy`);

Dumby
Шикарно. Большое спасибо!

А есть в природе код кнопки этого расширеня TimerFox (таймер-напоминалку) или создать?

KOMMEHTATOP пишет

А есть в природе код кнопки этого расширеня TimerFox (таймер-напоминалку) или создать?

Нет.