Как сделать в кнопке TabScroll(Firefox) прокрутку не через 1 вкладку, а подряд.

Как это подряд?

с 1-й на 2-ю с 2-й на 3-ю итд)) а не как в кнопке: с 1 на 3-ю с 3-й на 5-ю. (все значения на 1 ед прокрутки колеса)

Мне кажется кнопка вообще не работает.

А что для этого кнопка нужна? У меня и так крутит.:)

25-11-2012 17:14:46
Упс. Это оказывается FireGestures так делает:dumb:

Да крутит, но кнопка вроде может крутить по кругу с последней на первую.

:dumb: меня либо глючит по полной... либо возможно кнопки не отличается стабильностью (после перезапуска лиси - кнопку тоже нужно перезапускать, 2-ю точно) :dumb: непонял как я её (1-ю) запустил - помню что пробывал и раньше (ок 10-й версии) и было также.
http://forum.mozilla-russia.org/viewtop … 20#p500720 поставил вашу, и кроме проблемы после рестарты лисы - других не вижу.

Ставим в рабочий режим, рестарт [firefox], кнопка не работает.

feas
Эта 21-06-2011 20:26:26 совсем левая я её удаляю, мне стыдно за такой код.
Ты лучше напиши что ты хочешь от этой кнопки.

bunda1 пишет

что ты хочешь от этой кнопки.

Чтобы не было проблемы с перезагрузкой. И может тогда сделать её только в инициализации, чтоб не пришлось нажимать каждый раз.

Какие функции нужны от кнопки.

25-11-2012 17:40:48

feas пишет

Пока на время удаления код кнопки пусть тут побудет.

:(

1 вариант. Чисто прокрутка колесом вкладок, без этой (в цитате) проблемы. Мне такая подойдет.

feas пишет

Ставим в рабочий режим, рестарт [firefox], кнопка не работает.

2 вариант - для искушенных. ЛКМ - переход на самую левую. ПКМ - на самую правую.

25-11-2012 17:46:21

bunda1 пишет

:(

ок

Прокрутка колесом вкладок у FF и так есть.

feas пишет

2 вариант - для искушенных. ЛКМ - переход на самую левую. ПКМ - на самую правую.

По кругу что ли?

bunda1 пишет

По кругу что ли?

имел ввиду на самую крайнюю. Тогда во 2-м варианте по кругу не будет нужна.
Как пример: 100 вкладок, мы на 50-й. Тогда переход на крайнюю будет куда полезнее.

ЛКМ - переход на самую левую и ПКМ - на самую правую

Выделить код

Код:

//Перейти на последнюю вкладку ....
gBrowser.selectedTab = gBrowser.mTabs[gBrowser.mTabs.length - 1];

//Перейти на первую вкладку .... 
gBrowser.selectedTab = gBrowser.mTabContainer.childNodes[0];

Прокрутка колесом вкладок у FF и так есть.

А что с этим.

bunda1 пишет

Прокрутка колесом вкладок у FF и так есть.

незаметил....
Колесо вверх - переход на след. вкладку влево, колесо вниз - переход на след. вкладку вправо
И было 2 настройки которые думаю будут по душе остальным. Порядок наоборот "вниз - влево" и по кругу.

Попробую, но не знаю что получится.

Чето в [nightly] куча кнопок отвалилась (Save, Undo Closed Tab, User-agent change, Cookies permissions и много других). Это только у меня так? :)

23-12-2012 10:08:28
Даже можно сказать, что отвалились почти все - работает только Переводчик google и простые кнопки, вроде кнопок bbcode и/или для запуска внешней программы.

23-12-2012 12:20:08

voqabuhe пишет

:beer: Как то я это пропустил. :blush:

adidharma пишет

Чето в [nightly] куча кнопок отвалилась (Save, Undo Closed Tab, User-agent change, Cookies permissions и много других). Это только у меня так? :)

№6070

Если не в тему то удалите .
Подскажите пожалуйста, может кто-нибудь сделать кнопку при нажатии на которую открывалась указанная программа Windows( например notepad.exe) или по указанному пути.
Спасибо.

№19

26-12-2012 22:34:14
№4 открыть файл который

bunda1 пишет

Прокрутка колесом вкладок у FF и так есть.

без дополнений? нет.
tab wheel scroll этим же занимается

okkamas_knife
это хорошо, но [seamonkey] - не нужен :P

У меня лежит код кнопки. Ввечером скину сюда

iDev.Pi пишет
bunda1 пишет

Прокрутка колесом вкладок у FF и так есть.

без дополнений? нет.

А вот и есть. Открой столько вкладок что бы появились кнопки прокрутки вкладок и покрути колёсиком мыши на вкладках.

feas пишет

№19Добавлено Вчера 18:34:14№4 открыть файл который
                    Отредактировано feas (Вчера 18:34:14)

СПАСИБО!!!

bunda1 пишет

Открой столько вкладок что бы появились кнопки прокрутки вкладок и покрути колёсиком мыши на вкладках.

не очень удобно((( к сожалею кода у меня не осталось - стучите автору (см. начало темы)

Кто может состряпать простенькую кнопку, чтобы при нажатии в новой вкладке [firefox] открывался https://www.google.ru ?

1fesFFFF пишет

Кто может состряпать простенькую кнопку, чтобы при нажатии в новой вкладке [firefox] открывался https://www.google.ru ?

Создай кнопку с кодом:

Выделить код

Код:

getBrowser().selectedTab = getBrowser().addTab("https://www.google.ru");

05-01-2013 23:17:34

Пример:

Выделить код

Код:

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%3Egoogle.ru%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%2C%2589PNG%250D%250A%251A%250A%2500%2500%2500%250DIHDR%2500%2500%2500%2510%2500%2500%2500%2510%2508%2506%2500%2500%2500%251F%25F3%25FFa%2500%2500%2500%2504sBIT%2508%2508%2508%2508%257C%2508d%2588%2500%2500%2500%2509pHYs%2500%2500%250E%25C3%2500%2500%250E%25C3%2501%25C7o%25A8d%2500%2500%2500%251CtEXtSoftware%2500Adobe%2520Fireworks%2520CS4%2506%25B2%25D3%25A0%2500%2500%2500%2516tEXtCreation%2520Time%250008%252F11%252F09%25D12_v%2500%2500%2501%25C6IDAT8%258Du%2592%25CDj%2513Q%2514%25C7%257F%29%25D9g%2593%2507%25B8%25FA%2500%25A2%250B%25B7%25E6%25AE%255C%25F9%2502YH%25B3%25E9%25C6%2597p%25B2u%25E7%25BEB%250A%258D%25D9%250A%25A2%251B%25A9%25DC%252C%25A4%2582%2510%25BA%25E9%25A6%28%258E%25AD%2514%25D2%250A%25C9%2540%25F0%2583%25CC%253D%257F%25173%2519%2526iz%25E00%25E7p%25CE%25FD%259D%258F9%2500%2592%25A4%25F05%25C8%25F5%2582%25F0A%25C9%2520H%2592%25B4%259C%252Bx%25AF%25D4%21qS%2501%25EDH%2502%2560p%2508%29%2580%2583%2524%2500y%2506%25CD%2516%259D%250Fo%25B8M%2504%25EC%25AC%259C%2590%25AE%2507%25FB%25C3%2593%25C2h%25B6%25C0%25F9%25AD%2580%251F%25AE%2506pn%253D%2598%25D6%2581%251B%25B1%25BA4W%2586w%251B%255D%25D4%251E%25A5%2501%25D2%250DH%25A7%25CCmh9%2517%25CD%2516%25E4%2519w%25F6NX1%255E%253F%25BBO%25F7a%258B%2583%2583%21I%25BA%25BF%250EH%25C1%25A7%25E0C%25A0%25E1z%2589%2592%259Eg%25B7%25D3%2501%2560%25F4%2525%25A3%25FB%2500h%25B6%25E8%258F%25FB%2524%21%25DC%253EB%250A%250D%25D7%250B%2522%250D8%25E7%25F1%251E%259E%25EF%2516%25A0%25F1%25B71%25FE%25D0o_%25E0%25DA%25A8%25BD%25A0%25E9%25EC%259F%25CCLf%25A6J%252C%25EA%25C9%25DB%253D1%25F0%253A%25BA%259C%28%25B7%25A8%25A3%25CB%2589%2518x%251D_%259C*%25B7%25A8%25E3%258BS%25E1%257C%25223%2513%25E5a%25D4U%2516%25E5%2507%2589r%258B%2502%258A%25EF%25C0o%25F8%25A1%25B8%253A%25CA%258B%255CI%25DD%258Fe%2581%25AD%2580%25FA%2583%259B%251D%25E4%25C54%25AA%2501%2512%25AFX%2503%25EC%2590ge%253EHB%25B2%25C2%25B6Hv%253E%252C%25FE5%258DjgO%25EF%253D%255E_%25A8%2596s%25A9%25AC%2520%2599%25FE%25CC%253EV%25FEr1U%2511%252F%253A43E%258B%2595%253F%25FF%25BBX%258D%2560%25D5%25CC%253F%253F%25DF%2595lY%2501%2525%25E9%25FB%25D5U%25D5%25F6J%25A3E%25BD%259A%25BC%2517%25F5D%25C9%2594%2506%25AF%25EC%257C%2524%2595%2595%25CE%25AE%25CF%25F4%25E8eW%25FB%2593w%259A.f%25CA-%25EA%25D7%25EFL%252F%253E%258D%25D4n%25B7%25F5%251FN2%25C0e-%2526g9%2500%2500%2500%2500IEND%25AEB%2560%2582%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5BgetBrowser%28%29.selectedTab%20%3D%20getBrowser%28%29.addTab%28%22https%3A//www.google.ru%22%29%3B%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%u041E%u043D%u043B%u0430%u0439%u043D-%u043F%u0435%u0440%u0435%u0432%u043E%u0434%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u0432%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0435%u043C%20%u043E%u043A%u043D%u0435%0A%u0411%u0435%u0437%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u044F%20%u043F%u0435%u0440%u0435%u0432%u043E%u0434%u0438%u0442%u0441%u044F%20%u0432%u0441%u044F%20%u0442%u0435%u043A%u0443%u0449%u0430%u044F%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0430%0A%0A%3Clabel%3E%20%0Aid%20%3D%20%3Cid%3E%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Открыть url в новой вкладке без проверки

Выделить код

Код:

var url="http://custombuttons.mozdev.org/";
getBrowser (). selectedTab = getBrowser (). addTab (url);

Открыть url в новой вкладке если она не пустая, если пустая то в текущей

Выделить код

Код:

var url="http://custombuttons.mozdev.org/";
if(getBrowser().currentURI.spec == "about:blank") loadURI (url);
 else{ getBrowser (). selectedTab = getBrowser (). addTab (url);
};

Открыть url в новой вкладке если она не пустая, если пустая то в текущей вариант 2 для ФФ 4+

Выделить код

Код:

var url = "http://custombuttons.mozdev.org/";
if(
    (
        gBrowser.currentURI.spec == "about:blank"
        || gBrowser.currentURI.spec == cbu.getPrefs("browser.newtab.url")
    )
    && !gBrowser.selectedBrowser.webProgress.isLoadingDocument
)
    loadURI(url);
else
    gBrowser.selectedTab = gBrowser.addTab(url);

Открыть url в текущей вкладке

Выделить код

Код:

var url="http://custombuttons.mozdev.org/";
loadURI (url);

см.тему готовые кнопки там всё есть

- короче уже вынес сюда:)))

05-01-2013 23:56:42
А что будет если изменить её на вертикальную? И как это сделать?
311779_kiss_11kb.jpg

Ну и ещё вариант.
Открыть url в новой вкладке.
В раздел "Код":

gBrowser.loadOneTab("https://www.google.ru", null, null, null, false, false);

feas пишет

А что будет если изменить её на вертикальную? И как это сделать?

Что изменить на вертикальную?

bunda1 пишет

Что изменить на вертикальную?

картинку видишь? это то ли персональная панель, то ли элементы панели закладок.
http://img.ii4.ru/images/2013/01/05/311 … s_11kb.jpg

feas пишет

картинку видишь? это то ли персональная панель, то ли элементы панели закладок.

Вижу. Я сейчас изменил orient на vertikal используя DOM Inspector Plus и ничего. Вот так.

bunda1 пишет

vertikal

vertical

Infocatcher пишет

:) Упс.
Если изменить orient на vertical используя DOM Inspector Plus то можно увидеть забавную но не практичную картину:
thumbyem.jpg

bunda1 пишет

то можно увидеть забавную но не практичную картину:

Ещё как практичную)))
311813_kiss_16kb.jpg
http://img.ii4.ru/images/2013/01/06/311 … s_16kb.jpg
profit!!!
Как закрепить результат?

06-01-2013 02:27:52
наверное так, вроде работает (стиль)

Выделить код

Код:

#moz-box-orient:  vertical {
display: -moz-box !important;
}

feas

Выделить код

Код:

document.getElementById("PlacesToolbarItems").setAttribute("orient", "vertical");

Infocatcher, bunda1 спасибо вам. Решил пока стилем сделать.

feas пишет

#moz-box-orient: vertical { display: -moz-box !important; }

Какой-то неказистый стиль, может должно быть:
{-moz-box-orient: vertical;
display: -moz-box !important;}

Kamui пишет

может должно быть:

может. А на что влияет синтаксис "{}"

feas
То что находится перед {} это селектор, то что внутри это свойства, которые изменяем. Судя по вашему стилю, #moz-box-orient: vertical это селектор, хотя есть свойство -moz-box-orient: vertical; и я предположил что это все-таки свойство, а не селектор.

Похоже на 18 [firefox] отвалилась Stf.

Pony_Smile_Pack пишет

Похоже на 18 [firefox] отвалилась Stf.

Я исправлю.

Установил кнопку VT на [aurora] 20 https://forum.mozilla-russia.org/viewto … 73#p596373 и сломал всю инициализацию в профиле.
Пробовал удалять расширение, с удалением всех кнопок - не помогло.
Как починить без сброса, перезда на новый профиль?

feas
Если ты используешь на Nightly custombuttons-0.0.5.6pre3-20111120 то должны быть проблемы, об этом тут почитай 13-12-2012 16:46:41

Может я тут накосячил:
user_pref("javascript.options.xml.chrome", true);
user_pref("javascript.options.xml.content", true);
user_pref("browser.tabs.closeButtons", 0);
user_pref("dom.placeholder.show_on_focus", false);

От версии CB независит. (хоть релиз хоть тот пре что выше)

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

02-02-2013 21:04:26
Мда зря я бил тревогу... закрыт. Настройку випилили и из 20 [aurora] http://forum.mozilla-russia.org/viewtop … 70#p592570

feas
Попробуй новую версию custombuttons-0.0.5.6pre4-20130127

bunda1 пишет

Попробуй новую версию custombuttons-0.0.5.6pre4-20130127

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

bunda1
а возможно ли как-то подружить Autocopy+3 ( Firefox 3.6 + ) с Quick Search Bar ?
дело в том, что при включенном Autocopy пропадает пункт поиска из контекстного меню. Примеры на скринах.

s_1360608923_2731946_0fea74b767.png

s_1360608956_5265311_13b83b5daf.png

извините, если не туда пишу :blush:

sonyas75
Надо в настройках кнопки отключить - Выделенный текст мигает при автокопировании :)

о! благодарствую. :)

Подскажите пожалуйста, максимально простой код для кнопки вкл/выкл навигационной панели.

vom

Выделить код

Код:

document.getElementById("nav-bar").collapsed = !document.getElementById("nav-bar").collapsed;

bunda1
Спасибо, а не подскажете по userChrome, нужно изменить иконку в identity-box с 6f20dbda211d.jpg на b0528ab8afb5.jpg. Но чтоб первая проявлялась при наведении на urlbar.

vom
Иконка та же самая, но менее заметная?
Так:

Выделить код

Код:

#page-proxy-favicon {
opacity: .5 !important;
}

#urlbar:hover #page-proxy-favicon {
opacity: 1 !important;
}

Kamui
Ох респект, я про opacity совсем забыл.

Подскажите как сделать чтобы кнопка Linkification всегда была активной?

fish08
Замени иконку кнопки.

bunda1 пишет

Замени иконку кнопки.

Иконку поменял но после перезагрузки страницы или браузера она опять не активна..

fish08
Странно но у меня после замены иконка отображается нормально. Может удали все из вкладки инициализации.

bunda1 пишет

Странно но у меня после замены иконка отображается нормально. Может удали все из вкладки инициализации.

может не поняли друг друга. Мне надо чтобы кнопка всегда была нажатой.

fish08 пишет

может не поняли друг друга. Мне надо чтобы кнопка всегда была нажатой.

Значит тебе нужно что бы кнопка автоматически превращала на страницах текстовые ссылки в обычные. Ну это не так сразу не сделаешь, может просто установи Linkification :: Дополнения Firefox или http://userscripts.org/scripts/show/67744

Ясно, поставил скрипт но кнопка все же лучше работает(поставлю ее если переделаете). Спасибо.

Можно вернуть к жизни эту кнопку? Master Edit Button №130 после Конвертирование старых кнопок с XML (E4X)

01-04-2013 22:48:21
№100 аналогично
Кнопка подходит под то что мне нужно, но не работает пока что.
Нужно чтобы открывало меню, где будут меню названия кодов скриптов. При нажатии текст копируется в буфер обмена, а если фокус в поле ввода, то вставляло прямо туда.

feas
http://downloads.mozdev.org/custombutto … 130226.xpi даёт возможность редактировать кнопку в менеджере кнопок.

02-04-2013 20:39:14

feas пишет

Нужно чтобы открывало меню, где будут меню названия кодов скриптов. При нажатии текст копируется в буфер обмена, а если фокус в поле ввода, то вставляло прямо туда.

Вот пример такой кнопки:

Выделить код

Код:

// Настройка функций кликов мыши ................................................................ 
this.onclick = function(e) {
     if ( e.button == 0 ) menuPopup.showPopup(this, -1, -1, "popup", "bottomleft", "topleft");
};


// Создать меню .................................................................................
var array = [
    "scripts 1",
    "scripts 2",
    "scripts qwerty",
    "scripts 44 55 66",
    
       "separator",

    "scripts some 1",
    "scriptssome 2",
    "scripts some 3"
            ];

var node = document.getElementById(this.id + "-menuPopup");
if ( node && node.parentNode ) node.parentNode.removeChild(node); // блокировать дублирование меню

var menuPopup = document.getElementById("mainPopupSet").appendChild(document.createElement("menupopup"));
menuPopup.id = this.id + "-menuPopup";

array.forEach(function(str) {
     if ( str == "separator" ) { menuPopup.appendChild( document.createElement("menuseparator") ); return }; 
     var menuItem = document.createElement("menuitem");
     menuItem.setAttribute("label", str );
     menuItem.addEventListener("command", insertOrCopyText, false); 
     menuPopup.appendChild(menuItem);
});
//this.type = "menu"; 



// Ставить текст в текстовое поле или скопировать из меню ..........................................
function insertOrCopyText( text ) { 

   var text = this.label;
   
   try { document.commandDispatcher.focusedElement.type; }
   catch(e) { gClipboard.write( text); return };
   
   var cmd = "cmd_insertText";
   var controller = document.commandDispatcher.getControllerForCommand(cmd);
   if ( controller && controller.isCommandEnabled(cmd) ) {
        var controller = controller.QueryInterface(Components.interfaces.nsICommandController);
        var params = Components.classes["@mozilla.org/embedcomp/command-params;1"].createInstance(Components.interfaces.nsICommandParams);
        params.setStringValue("state_data", text);
        controller.doCommandWithParams(cmd, params);
        }
};

bunda1 пишет

даёт возможность редактировать кнопку в менеджере кнопок.

пока ПКМ не сделал, не догадался бы =) спасиб)

bunda1 пишет

Вот пример такой кнопки:

спасиб, работает. (остальным: вставляйте в инициализацию)

Интересный момент с отвалом кнопок - на официальном FF 20 некоторые кнопки отвалились, а на неофициальной сборке (из моей подписи) всё нормально. :music: Как сиё объяснить - :sick: :)
Ступил. :dumb:

adidharma
javascript.options.xml.chrome = true в about:config?

Infocatcher
Ошибся я. :dumb: На beta 21 кнопки не заработали (с учётом javascript.options.xml.chrome = true), а в 20-й версии без разницы, оф. билд или сборка - кнопки работают.

adidharma пишет

На beta 21 кнопки не заработали (с учётом javascript.options.xml.chrome = true)

Там эта настройка уже удалена, как и E4X, который она включала.

Infocatcher пишет

Там эта настройка уже удалена, как и E4X, который она включала.

И, больше ничего не сделать, для 21 и выше? :(  Других вариантов нет?

adidharma пишет

И, больше ничего не сделать, для 21 и выше? :(  Других вариантов нет?

Кроме как переписать неработающий код без использования E4X? Ничего.
В некоторых простых случаях можно конвертировать кнопкой Convert E4X.

Infocatcher пишет

В некоторых простых случаях можно конвертировать кнопкой Convert E4X.

Спасибо. :beer: БОльшую часть кнопок получилось исправить. :)

adidharma пишет

БОльшую часть кнопок получилось исправить.

И работают даже после перезапуска?

Pony_Smile_Pack пишет

И работают даже после перезапуска?

Да.

Infocatcher

adidharma пишет

Спасибо. :beer: БОльшую часть кнопок получилось исправить. :)

Аналогично! Присоединяюсь с благодарностям!
Возник один вопрос уже после того, как их исправил:
т.е. можно было их пока не править, а изменить javascript.options.xml.chrome на true ??
С FF21 они бы тогда отвалились?

Inko7 пишет

т.е. можно было их пока не править, а изменить javascript.options.xml.chrome на true ??
С FF21 они бы тогда отвалились?

Все верно.

Причем при javascript.options.xml.chrome = false редактировать кнопки можно только в экспериментальной версии CB, иначе потом чинить придется.

Просьба.
Кто в теме пофиксите пожалуйста кнопку User-agent change - не работает на 20-м фоксе.

Здравствуйте.
Есть вопросы по поводу 2х кнопок:
1.VT(вертикальная панель)-нельзя ли её сделать пошире?-очень узкая -http://images.vfl.ru/ii/1365142610/816714dc/2084817.jpg
2.Context translate-не до конца отображаются предложения по выбору действий в проводнике -http://images.vfl.ru/ii/1365142612/714ffe8d/2084819.jpg
И ещё странный какой то глюк-при запуске лисы запускаются все кнопки:срабатывает антибосскей,показывает пароли,очищается кеш,показывается список установленных расширений и тд.Почему?И/или что тогда означает Left=› в описаниях кнопки?Потому что при  нажатии ЛКМ на иконку антибосскея и списка расширений ничего не происходит,а при запуске лисы они запускаются.....

VORON пишет

Здравствуйте.
1.VT(вертикальная панель)-нельзя ли её сделать пошире?-очень узкая -http://images.vfl.ru/ii/1365142610/816714dc/2084817.jpg

Расстояние от курсора и длительность нахождения курсора рядом с вертикальной панелью при котором она появляется или сворачивается можно изменить в начале кода инициализации в кнопке изменяя эти константы: showDelay, distanceShow, distanceHide.
Ширину панели можно изменить в начале кода инициализации в кнопке изменяя это значение: vtWidthCorrection

bunda1
Спасибо,панель подправил.
Может подскажете и по поводу глюка не срабатывания кнопок  по нажатию левой кнопкой на них(антибосскей,список расширений,очистка кеша) и срабатывании их всех при запуске лисы?

VORON пишет

Здравствуйте.
И ещё странный какой то глюк-при запуске лисы запускаются все кнопки:срабатывает антибосскей,показывает пароли,очищается кеш,показывается список установленных расширений и тд.Почему?И/или что тогда означает Left=› в описаниях кнопки?Потому что при  нажатии ЛКМ на иконку антибосскея и списка расширений ничего не происходит,а при запуске лисы они запускаются.....

Так не должно быть, ты наверно положил код из вкладки Код в вкладку Инициализация.

05-04-2013 19:16:47
В этих кнопках я имею в виду :)

05-04-2013 19:35:26

oopsididagainster пишет

Просьба.
Кто в теме пофиксите пожалуйста кнопку User-agent change - не работает на 20-м фоксе.

Выделить код

Код:

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%3EUser-agent%20change%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODdhEAAQAPcAAAAAAAAAALi4uMjIyNDQ0Pj4+MC8vCAUFAgEBLxYWLxAQMhYWMhAQNRYWBAEBNRAQLwgIMggIORYWNQgIORAQOQgIPBgYPAoKPRAQPQcILwICMgICNQICOQICPAEBPgIBP8AAP8oKP9gYPQQCPQoHPRgVPRAKNQgCOQgCPQgCNRAKORAKPRYQLwgCMggCNRYQLxAKMhAKORYQMhYQLxYQPRYKPRADORYKMBAFNRADORADNRYKMhYKLxYKPRYDMBABNRYFORYDMBYFNRYBMBYBCAUBNDQyCAkDCA0BCA0FCBEDCBUDAgUBCB0BCBkDCCEDCCUDCB0FCCkDCC0DCDECCDUCCDkCCD0CCj0HBD0CCDEICDUICDkICjwKBz0IAi0DAjECAjUCAjkCAj0BADwBAD/ACj/KCCUJCC0JAhkDAh0DAiEDAiUDAikDAD4CCB0JAhEDAhUDAT0ECBUJCCkLAg0DAjUIAjkIAj0ICCELCC0NAjEIAgkDCBkLCCUNCD0RCA0JCDURAi0LCDkTAikLCB0NCC0RAiULCD0VCDETCDUVAiELAjkTAj0TCD0ZCBELCCkTCC0VAh0LAjUTCCUTCDUZAjETCBUNCDkbAhkLCD0dAi0TAj0ZAjkZCB0RCCETAikTBD0dAD4cCC0ZCDEbCDUdAhULAj0dAD/eAiUTAjUbAjkdADwdLjAvMjQzLzMxAAIBAjEbCC0dAiETCCUZCCkbAi0bAhELCB0VAh0TAikbCBkTCCUdAiUbCCEbAhkTAiEbCB0ZAg0LCBUTAhUTAh0bCA0NAgUFCB0dAhkbCBkbAhETCBETCBUZAgkLAhUbAg0TCBUdAhEbCA0RCBEbAg0bAgkTCA0VCAkLAgULCA0ZAgkbCA0dAgUTAgUbCAkTCAkbLi4wMjI0Ly8zAAACAgEbAgETAgELCAUdCAUZCAUTAgEFCAEbCAUNCAETCAELCAUJNDIzCAEDLxAWMhAWNRAWORAWPRAWLwIIMgIINQIIOQIIPQIIPQEEPRUWPgACCwAAAAAEAAQAAAIhwAJCBxIsOBABAIRmFlohmDDhAsVMjRThkAZVAcjlinjZiJFgWYkIkwocSHIkAjEkfR4cqErAghSTvwjMIRNmzEZ5nxo81+ImC8FkkNgsyZOogd/fvggEMNSDx6YwiTwM4QIozdvxox51egHqyJwhkVgYKDUr1pDeBgpUCqBD//+fYhqsK7dgAA7%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20ps%20%3D%20Components.%20classes%20%5B%22@mozilla.org/preferences-service%3B1%22%5D.%20getService%20%28Components.%20interfaces.%20nsIPrefService%29.%20getBranch%20%28%22general.%22%29%3B%0A%20%20%20%20ps.%20setCharPref%20%28%22useragent.override%22%2C%20%22reset%22%29%3B%0A%0Athis.PS%20%3D%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D%20.getService%28Components.interfaces.nsIPrefBranch%29%3B%0Athis.PS.clearUserPref%28%22general.useragent.override%22%29%3B%0Athis.image%3D%0A%27data%3Aimage/gif%3Bbase64%2CR0lGODdhEAAQAPcAAAAAAAAAAHh4eJiYmLi4uMjIyNDQ0Pj4+MC8vKCYmJiMjHBgYJB0dKCIiJhgYCAUFKxwcHRAQAgEBKxYWJRAQLxYWKBAQKxAQDgUFMxwcHQoKLxAQMxYWIQoKNhwcJQoKMxAQBAEBFAUFKwoKNhYWLwoKNhAQKAgIMwoKNgoKCAEBDgEBFAEBKAoJKAwKNhgWNhYUIxkYIRIQLx4cJhgWNhAKLxAKNhYQMxAKMxYQKxAKNhwWKCQjJhoXLxYQMxwWKBAKFAUBKxYQJRAKFg0KLxwWIRAKFAkFNhYKHhkXKxwWMxYKDgUBHRAKLxYKNhwQHBgWEw0KMxwQJh0YKxYKLxwQNhwKFAkBKxwQDgkFMxwKIx0YLxwKFA0FKxwKCAUBHBoXDgkBFA0BJyYjDg0KDg0FDg0BHh4cNDQyHR0YCAkBCAkFCA0BCA0FJCcjAgUBAgkBAg0BIigiFhwWCg0KFh4XDR0QIiYjAg0FCh0QIigkFhwYFB0XCB0PBh4OBhwPBh4QAgkFLjAvMjQzLzMxER0XBw0KBx0SAAIBDR0WCB0WAg0KIycmHB0dAgUFAgkKAg0QCA0QAg0WCAkKAgkQCA0WAgUKAgkWAgUQAgUWCAkQCAkWIyMkLi4wMjI0Ly8zAAACAgEQAgEWDg0WAgEKCAUWAgEFCAUQDg0QCAEWBwUKDgkWCAEQDgUWDgEWEw0WDgkQCAEKDgUQFAkWDgEQFAUWFAEWHRkdFg0WCgUKHQocHRAcFAEQIQocJyMmFAUQIRAcDgEKJQocFAkQHQoWKAocJRAcCAEFDgUKKwocHhwdNDIzKBAcIQoWLwocHRAWFAEKFA0QKxAcJQoWMwocNgocLxAcKAoWJBkdKwoWKCIkIRAWMxAcFAUKHQoQLwoWNhAcKxYcJRAWMwoWDgEFNgoWHRkaLxYcKBAWIQoQKxAWJQoQDgkKLxAWMxYcKAoQFAEFMxAWKwoQNhYcLwoQNhAWMwoQNgoQKAkMJhkaFAkKNhUYIQ8QLxscKAgKNhQVCwAAAAAEAAQAAAIpgANCBxIsOBACQIl+Fnoh6CAg3L8KOzTZ2EdA3X2HFwooY5Hjwv7XDQwQKFETwklVFwoUIBEhCkX5qkokBPDQQYkSBi0kqKBQUnyCc2nkyEiRCwN9OgxoodOnCmXChTqVEK+g0RH4BM4ocWIFmATDnKaj8fUfD2EhkurUyePZQJ7hGsx4cULtBL+EUUwsAXOFmjZ9mgBU+CIgSMSgx2B0qBAqI4NBAQAOw%3D%3D%27%3B%0A%0A%0Avar%20%u043C%u0435%u043D%u044E%20%3D%0A%27%3Cmenupopup%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%5Cn%5C%0A%20%20%20%20%20%20%20oncommand%3D%22this.parentNode.%u0441%u043C%u0435%u043D%u0438%u0442%u044C%u042E%u0437%u0435%u0440%u0430%u0433%u0435%u043D%u0442%28event%29%22%3E%5Cn%5C%0A%20%20%20%20%20%20%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22reset%22%20label%3D%22Default%20User-Agent%22/%3E%5Cn%5C%0A%20%20%20%20%20%20%20%20%20%20%3Cmenuseparator/%3E%5Cn%5C%0A%20%20%20%20%20%20%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28Windows%3B%20U%3B%20Windows%20NT%205.1%3B%20ru%3B%20rv%3A1.9.2.3%29%20Gecko/20100401%20Firefox/3.6.15%20YB/3.5.1%22%20label%3D%22FF%203.6.15+yandexbar%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28Windows%3B%20U%3B%20Windows%20NT%205.1%3B%20ru%3B%20rv%3A1.9.1.4%29%20Gecko/20091016%20Firefox/1.5.4%22%20label%3D%22firefox%201.5.4%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/4.76C-SGI%20%5Bru%5D%20%28X11%3B%20I%3B%20IRIX64%206.5%20IP30%29%22%20label%3D%22Mozilla%20SGI%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/4.0%20%28compatible%3B%20MSIE%206.0%3B%20Windows%20NT%205.1%3B%20SV1%29%22%20label%3D%22IE-6%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Googlebot/2.1%20%28+http%3A//www.google.com/bot.html%29%22%20label%3D%22Googlebot%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22iCab/3.0.2%20%28Macintosh%3B%20U%3B%20PPC%20Mac%20OS%29%22%20label%3D%22iCab/Mac%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28X11%3B%20Linux%20x86_64%3B%20rv%3A2.0b6pre%29%20Gecko/20100401%20Firefox/3.6.3%22%20label%3D%22Linux%20x86_64%3B%20rv%3A2.0b6pre%29%20Gecko/20100401%20Firefox/3.6.3%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22AmigaVoyager/3.2%20%28AmigaOS/MC680x0%29%22%20label%3D%22AmigaVoyager%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28X11%3B%20U%3B%20Linux%20x86_64%3B%20en-US%3B%20rv%3A1.9.1.3%29%20Gecko/20090914%20Slackware/13.0_stable%20Firefox/3.5.3%22%20label%3D%22Slackware%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28Macintosh%3B%20U%3B%20PPC%20Mac%20OS%20X%2010.4%3B%20ru%3B%20rv%3A1.9.2.3%29%20Gecko/20100401%20Firefox/3.6.3%22%20label%3D%22Firefox/3.6.3%20Mac%20OS%20X%2010.4%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22NCSA%20Mosaic/1.0%20%28X11%3BSunOS%204.1.4%20sun4m%29%22%20label%3D%22NCSA%20Mosaic/1.0%20%28X11%3BSunOS%204.1.4%20sun4m%29%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22NetSurf/2.0%20%28RISC%20OS%3B%20armv5l%29%22%20label%3D%22NetSurf/2.0%20%28RISC%20OS%3B%20armv5l%29%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/1.10%20%5Ben%5D%20%28Compatible%3B%20RISC%20OS%203.70%3B%20Oregano%201.10%29%22%20label%3D%22Mozilla/1.10%20%5Ben%5D%20%28Compatible%3B%20RISC%20OS%203.70%3B%20Oregano%201.10%29%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28BeOS%3B%20U%3B%20Haiku%20BePC%3B%20en-US%3B%20rv%3A1.8.1.10pre%29%20Gecko/20080112%22%20label%3D%22Mozilla/5.0%20%28BeOS%3B%20U%3B%20Haiku%20BePC%3B%20en-US%3B%20rv%3A1.8.1.10pre%29%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28OS/2%3B%20U%3B%20Warp%204.5%3B%20en-US%3B%20rv%3A1.8.1.3pre%29%20Gecko/20070307%22%20label%3D%22Mozilla/5.0%20%28OS/2%3B%20U%3B%20Warp%204.5%3B%20en-US%3B%20rv%3A1.8.1.3pre%29%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28PLAYSTATION%203%3B%202.00%29%22%20label%3D%22Mozilla/5.0%20%28PLAYSTATION%203%3B%202.00%29%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Links%20%286.9%3B%20Unix%206.9-astral%20sparc%3B%2080x25%29%22%20label%3D%22Links%20%286.9%3B%20Unix%206.9-astral%20sparc%3B%2080x25%29%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22NCSA_Mosaic/2.0%20%28Windows%203.1%29%22%20label%3D%22NCSA_Mosaic/2.0%20%28Windows%203.1%29%22/%3E%5Cn%5C%0A%20%20%20%20%3Cmenuitem%20type%3D%22radio%22%20value%3D%22Mozilla/5.0%20%28Windows%3B%20U%3B%20Windows%20NT%206.1%3B%20en-US%29%20AppleWebKit/532.9%20%28KHTML%2C%20like%20Gecko%29%20Chrome/5.0.307.0%20Safari/532.9%22%20label%3D%22Chrome/5.0.307.0%22/%3E%5Cn%5C%0A%3C/menupopup%3E%27%3B%0A%0A%0A%u043C%u0435%u043D%u044E%20%3D%20e4xConv_parseXULFromString%20%28%u043C%u0435%u043D%u044E%29%3B%0A%u043C%u0435%u043D%u044E.%20childNodes%20%5B0%5D.%20setAttribute%20%28%22checked%22%2C%20%22true%22%29%3B%0Athis.%20orient%20%3D%20%22horizontal%22%3B%0Athis.%20type%20%3D%20%22menu%22%3B%0Athis.%20appendChild%20%28%u043C%u0435%u043D%u044E%29%3B%0Athis.%20%u0441%u043C%u0435%u043D%u0438%u0442%u044C%u042E%u0437%u0435%u0440%u0430%u0433%u0435%u043D%u0442%20%3D%20function%20%28%u0441%u043E%u0431%u044B%u0442%u0438%u0435%29%0A%7B%0A%20%20%20%20var%20%u044E%u0437%u0435%u0440%u0430%u0433%u0435%u043D%u0442%20%3D%20%u0441%u043E%u0431%u044B%u0442%u0438%u0435.%20target.%20getAttribute%20%28%22value%22%29%3B%0A%20%20%20%20%20%20%20var%20ps%20%3D%20Components.%20classes%20%5B%22@mozilla.org/preferences-service%3B1%22%5D.%20getService%20%28Components.%20interfaces.%20nsIPrefService%29.%20getBranch%20%28%22general.%22%29%3B%0A%20%20%20%20ps.%20setCharPref%20%28%22useragent.override%22%2C%20%u044E%u0437%u0435%u0440%u0430%u0433%u0435%u043D%u0442%29%3B%0Athis.PS%20%3D%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D%20.getService%28Components.interfaces.nsIPrefBranch%29%3B%0Athis.pref%3D%27general.useragent.override%27%3B%0Avar%20state%3Dthis.PS.getCharPref%28this.pref%29%3B%0Aif%20%28state%3D%3D%22reset%22%29%20%7B%20%0Athis.PS%20%3D%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D%20.getService%28Components.interfaces.nsIPrefBranch%29%3B%0Athis.pref%3D%27general.useragent.override%27%3B%0Avar%20state%3Dthis.PS.getCharPref%28this.pref%29%3B%0Athis.PS%20%3D%20Components.classes%5B%27@mozilla.org/preferences-service%3B1%27%5D%20.getService%28Components.interfaces.nsIPrefBranch%29%3B%0Athis.PS.clearUserPref%28%22general.useragent.override%22%29%3B%20%0Athis.image%3D%0A%27data%3Aimage/gif%3Bbase64%2CR0lGODdhEAAQAPcAAAAAAAAAAHh4eJiYmLi4uMjIyNDQ0Pj4+MC8vKCYmJiMjHBgYJB0dKCIiJhgYCAUFKxwcHRAQAgEBKxYWJRAQLxYWKBAQKxAQDgUFMxwcHQoKLxAQMxYWIQoKNhwcJQoKMxAQBAEBFAUFKwoKNhYWLwoKNhAQKAgIMwoKNgoKCAEBDgEBFAEBKAoJKAwKNhgWNhYUIxkYIRIQLx4cJhgWNhAKLxAKNhYQMxAKMxYQKxAKNhwWKCQjJhoXLxYQMxwWKBAKFAUBKxYQJRAKFg0KLxwWIRAKFAkFNhYKHhkXKxwWMxYKDgUBHRAKLxYKNhwQHBgWEw0KMxwQJh0YKxYKLxwQNhwKFAkBKxwQDgkFMxwKIx0YLxwKFA0FKxwKCAUBHBoXDgkBFA0BJyYjDg0KDg0FDg0BHh4cNDQyHR0YCAkBCAkFCA0BCA0FJCcjAgUBAgkBAg0BIigiFhwWCg0KFh4XDR0QIiYjAg0FCh0QIigkFhwYFB0XCB0PBh4OBhwPBh4QAgkFLjAvMjQzLzMxER0XBw0KBx0SAAIBDR0WCB0WAg0KIycmHB0dAgUFAgkKAg0QCA0QAg0WCAkKAgkQCA0WAgUKAgkWAgUQAgUWCAkQCAkWIyMkLi4wMjI0Ly8zAAACAgEQAgEWDg0WAgEKCAUWAgEFCAUQDg0QCAEWBwUKDgkWCAEQDgUWDgEWEw0WDgkQCAEKDgUQFAkWDgEQFAUWFAEWHRkdFg0WCgUKHQocHRAcFAEQIQocJyMmFAUQIRAcDgEKJQocFAkQHQoWKAocJRAcCAEFDgUKKwocHhwdNDIzKBAcIQoWLwocHRAWFAEKFA0QKxAcJQoWMwocNgocLxAcKAoWJBkdKwoWKCIkIRAWMxAcFAUKHQoQLwoWNhAcKxYcJRAWMwoWDgEFNgoWHRkaLxYcKBAWIQoQKxAWJQoQDgkKLxAWMxYcKAoQFAEFMxAWKwoQNhYcLwoQNhAWMwoQNgoQKAkMJhkaFAkKNhUYIQ8QLxscKAgKNhQVCwAAAAAEAAQAAAIpgANCBxIsOBACQIl+Fnoh6CAg3L8KOzTZ2EdA3X2HFwooY5Hjwv7XDQwQKFETwklVFwoUIBEhCkX5qkokBPDQQYkSBi0kqKBQUnyCc2nkyEiRCwN9OgxoodOnCmXChTqVEK+g0RH4BM4ocWIFmATDnKaj8fUfD2EhkurUyePZQJ7hGsx4cULtBL+EUUwsAXOFmjZ9mgBU+CIgSMSgx2B0qBAqI4NBAQAOw%3D%3D%27%3B%0A%0A%20%7D%0A%20else%20%7B%20this.image%3D%0A%27data%3Aimage/gif%3Bbase64%2CR0lGODdhEAAQAPcAAAAAAAAAALi4uMjIyNDQ0Pj4+MC8vCAUFAgEBLxYWLxAQMhYWMhAQNRYWBAEBNRAQLwgIMggIORYWNQgIORAQOQgIPBgYPAoKPRAQPQcILwICMgICNQICOQICPAEBPgIBP8AAP8oKP9gYPQQCPQoHPRgVPRAKNQgCOQgCPQgCNRAKORAKPRYQLwgCMggCNRYQLxAKMhAKORYQMhYQLxYQPRYKPRADORYKMBAFNRADORADNRYKMhYKLxYKPRYDMBABNRYFORYDMBYFNRYBMBYBCAUBNDQyCAkDCA0BCA0FCBEDCBUDAgUBCB0BCBkDCCEDCCUDCB0FCCkDCC0DCDECCDUCCDkCCD0CCj0HBD0CCDEICDUICDkICjwKBz0IAi0DAjECAjUCAjkCAj0BADwBAD/ACj/KCCUJCC0JAhkDAh0DAiEDAiUDAikDAD4CCB0JAhEDAhUDAT0ECBUJCCkLAg0DAjUIAjkIAj0ICCELCC0NAjEIAgkDCBkLCCUNCD0RCA0JCDURAi0LCDkTAikLCB0NCC0RAiULCD0VCDETCDUVAiELAjkTAj0TCD0ZCBELCCkTCC0VAh0LAjUTCCUTCDUZAjETCBUNCDkbAhkLCD0dAi0TAj0ZAjkZCB0RCCETAikTBD0dAD4cCC0ZCDEbCDUdAhULAj0dAD/eAiUTAjUbAjkdADwdLjAvMjQzLzMxAAIBAjEbCC0dAiETCCUZCCkbAi0bAhELCB0VAh0TAikbCBkTCCUdAiUbCCEbAhkTAiEbCB0ZAg0LCBUTAhUTAh0bCA0NAgUFCB0dAhkbCBkbAhETCBETCBUZAgkLAhUbAg0TCBUdAhEbCA0RCBEbAg0bAgkTCA0VCAkLAgULCA0ZAgkbCA0dAgUTAgUbCAkTCAkbLi4wMjI0Ly8zAAACAgEbAgETAgELCAUdCAUZCAUTAgEFCAEbCAUNCAETCAELCAUJNDIzCAEDLxAWMhAWNRAWORAWPRAWLwIIMgIINQIIOQIIPQIIPQEEPRUWPgACCwAAAAAEAAQAAAIhwAJCBxIsOBABAIRmFlohmDDhAsVMjRThkAZVAcjlinjZiJFgWYkIkwocSHIkAjEkfR4cqErAghSTvwjMIRNmzEZ5nxo81+ImC8FkkNgsyZOogd/fvggEMNSDx6YwiTwM4QIozdvxox51egHqyJwhkVgYKDUr1pDeBgpUCqBD//+fYhqsK7dgAA7%27%3B%0A%0A%20%7D%3B%0A%7D%0A%20%20%0A%0Afunction%20e4xConv_parseXULFromString%28xul%29%20%7B%0A%09xul%20%3D%20xul.replace%28/%3E%5Cs+%3C/g%2C%20%22%3E%3C%22%29%3B%0A%09return%20new%20DOMParser%28%29.parseFromString%28xul%2C%20%22application/xml%22%29.documentElement%3B%0A%7D%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

bunda1
Мда:angel:вот это я дал маху.Действительно,на 3х кнопках положил не туда.
На автомате видать-код кнопки»инициализация:beer:

У кого-нибудь кнопка Plugins Permissions работает?
Fx 20, CB 0.0.5.6pre5-20130226

humnmind
Видимо, ни у кого.
Даже about:permissions сломали.
Там теперь записывается разрешение не для "plugins", а для "plugin:flash" – свое для каждого плагина.
Можно изменить в коде

Выделить код

Код:

permissionType: "plugins",

на

Выделить код

Код:

permissionType: "plugin:flash",

– будет частично работать для Flash.

07-04-2013 17:18:10

Infocatcher пишет

будет частично работать для Flash

Это, впрочем, легко подправить, но вот для контроля всех плагинов придется делать по кнопке на каждый...

07-04-2013 17:24:40

Infocatcher пишет

записывается разрешение не для "plugins", а для "plugin:flash"

Это все видно в %профиль%/permissions.sqlite – таблица moz_hosts, столбец type.

А в SeaMonkey 2.17 не работает ни "plugins", ни "plugin:flash", ни встроенная переключалка (переключает, но не сохраняет). Ну, вообще молодцы, чё.

07-04-2013 18:15:52
Подправил, всяко лучше, чем вообще никак: https://forum.mozilla-russia.org/viewto … 91#p608391 :)

Infocatcher
Чего-то у меня и 0.1.1 не работает.:/
Включен только Flash плагин.
У вас 0.1.1 точно работает?

humnmind
Ой, там еще хуже все.
Я на Nightly смотрел – там "plugin:flash", а в 20 – "plugin:NPSWF32_11_6_602_180.dll". =(

Infocatcher
Тока хотел написать.
Это поправимо? Или таки ждать следующих версий Fx?

humnmind пишет

Это поправимо?

Вроде бы, да, обновил.

07-04-2013 19:49:40
okkamas_knife
Да план-то нормальный. Изменение полезное. Другое дело, что SeaMonkey за изменениями не поспевает.
Ну, и убого, что в разных версиях свой способ настройки, это да. =(

bunda1 пишет

Нужно чтобы открывало меню, где будут меню названия кодов скриптов. При нажатии текст копируется в буфер обмена, а если фокус в поле ввода, то вставляло прямо туда.

Вот пример такой кнопки.

Возникла проблема - это для символов и даже ссылок, но вот мне нужно такой формат в буфере, и в меню желательно отдельное название:

Выделить код

Код:

jQuery(function(){

jQuery.fn.getTitle = function() { // Copy the title of every IMG tag and add it to its parent A so that fancybox can show titles
    var arr = jQuery("a.fancybox");
    jQuery.each(arr, function() {
        var title = jQuery(this).children("img").attr("title");
        jQuery(this).attr('title',title);
    })
}

// Supported file extensions
var thumbnails = jQuery("a:has(img)").not(".nolightbox").filter( function() { return /\.(jpe?g|png|gif|bmp)$/i.test(jQuery(this).attr('href')) });

thumbnails.addClass("fancybox").attr("rel","fancybox").getTitle();
jQuery("a.fancybox").fancybox({
    'cyclic': true,
    'autoScale': true,
    'padding': 10,
    'opacity': true,
    'speedIn': 500,
    'speedOut': 500,
    'changeSpeed': 300,
    'overlayShow': true,
    'overlayOpacity': "0.3",
    'overlayColor': "#666666",
    'titleShow': true,
    'titlePosition': 'inside',
    'enableEscapeButton': true,
    'showCloseButton': true,
    'showNavArrows': true,
    'hideOnOverlayClick': true,
    'hideOnContentClick': false,
    'width': 560,
    'height': 340,
    'transitionIn': "elastic",
    'transitionOut': "elastic",
    'centerOnScroll': true
});


})
</script>
feas пишет

Возникла проблема - это для символов и даже ссылок, но вот мне нужно такой формат в буфере, и в меню желательно отдельное название:

Сделал по простому, твой большой код в вкладке Справка:

Выделить код

Код:

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%3Eeksperimental%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bcustombuttons-stdicon-4%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20................................................................%20%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20menuPopup.showPopup%28this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%7D%3B%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20.................................................................................%0Avar%20array%20%3D%20%5B%0A%20%20%20%20%22scripts%201%22%2C%0A%20%20%20%20%22scripts%202%22%2C%0A%20%20%20%20%22scripts%20qwerty%22%2C%0A%20%20%20%20%22scripts%2044%2055%2066%22%2C%20%20%20%20%0A%20%20%20%20%20%20%20%22separator%22%2C%0A%20%20%20%20%22scripts%20some%201%22%2C%0A%20%20%20%20%22scriptssome%202%22%2C%0A%20%20%20%20%22scripts%20some%203%22%2C%0A%20%20%20%20this.Help%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%3B%0A%0Avar%20node%20%3D%20document.getElementById%28this.id%20+%20%22-menuPopup%22%29%3B%0Aif%20%28%20node%20%26%26%20node.parentNode%20%29%20node.parentNode.removeChild%28node%29%3B%20//%20%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0434%u0443%u0431%u043B%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u043C%u0435%u043D%u044E%0A%0Avar%20menuPopup%20%3D%20document.getElementById%28%22mainPopupSet%22%29.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0AmenuPopup.id%20%3D%20this.id%20+%20%22-menuPopup%22%3B%0A%0Aarray.forEach%28function%28str%29%20%7B%0A%20%20%20%20%20if%20%28%20str%20%3D%3D%20%22separator%22%20%29%20%7B%20menuPopup.appendChild%28%20document.createElement%28%22menuseparator%22%29%20%29%3B%20return%20%7D%3B%20%0A%20%20%20%20%20var%20menuItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20%20menuItem.setAttribute%28%22label%22%2C%20str.substring%28%200%2C%2020%20%29%20%29%3B%20%0A%20%20%20%20%20menuItem.setAttribute%28%22value%22%2C%20str%20%29%3B%20%0A%20%20%20%20%20menuItem.addEventListener%28%22command%22%2C%20insertOrCopyText%2C%20false%29%3B%20%0A%20%20%20%20%20menuPopup.appendChild%28menuItem%29%3B%0A%7D%29%3B%0A//this.type%20%3D%20%22menu%22%3B%20%0A%0A%0A%0A//%20%u0421%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0435%20%u043F%u043E%u043B%u0435%20%u0438%u043B%u0438%20%u0441%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0438%u0437%20%u043C%u0435%u043D%u044E%20..........................................%0Afunction%20insertOrCopyText%28%29%20%7B%20%0A%0A%20%20%20var%20text%20%3D%20this.value%3B%0A%20%20%20%0A%20%20%20try%20%7B%20document.commandDispatcher.focusedElement.type%3B%20%7D%0A%20%20%20catch%28e%29%20%7B%20gClipboard.write%28%20text%29%3B%20return%20%7D%3B%0A%20%20%20%0A%20%20%20var%20cmd%20%3D%20%22cmd_insertText%22%3B%0A%20%20%20var%20controller%20%3D%20document.commandDispatcher.getControllerForCommand%28cmd%29%3B%0A%20%20%20if%20%28%20controller%20%26%26%20controller.isCommandEnabled%28cmd%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20var%20controller%20%3D%20controller.QueryInterface%28Components.interfaces.nsICommandController%29%3B%0A%20%20%20%20%20%20%20%20var%20params%20%3D%20Components.classes%5B%22@mozilla.org/embedcomp/command-params%3B1%22%5D.createInstance%28Components.interfaces.nsICommandParams%29%3B%0A%20%20%20%20%20%20%20%20params.setStringValue%28%22state_data%22%2C%20text%29%3B%0A%20%20%20%20%20%20%20%20controller.doCommandWithParams%28cmd%2C%20params%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%0A%0A%0A%0A%0A%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%5BjQuery%28function%28%29%7B%0A%0AjQuery.fn.getTitle%20%3D%20function%28%29%20%7B%20//%20Copy%20the%20title%20of%20every%20IMG%20tag%20and%20add%20it%20to%20its%20parent%20A%20so%20that%20fancybox%20can%20show%20titles%0A%20%20%20%20var%20arr%20%3D%20jQuery%28%22a.fancybox%22%29%3B%0A%20%20%20%20jQuery.each%28arr%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20var%20title%20%3D%20jQuery%28this%29.children%28%22img%22%29.attr%28%22title%22%29%3B%0A%20%20%20%20%20%20%20%20jQuery%28this%29.attr%28%27title%27%2Ctitle%29%3B%0A%20%20%20%20%7D%29%0A%7D%0A%0A//%20Supported%20file%20extensions%0Avar%20thumbnails%20%3D%20jQuery%28%22a%3Ahas%28img%29%22%29.not%28%22.nolightbox%22%29.filter%28%20function%28%29%20%7B%20return%20/%5C.%28jpe%3Fg%7Cpng%7Cgif%7Cbmp%29%24/i.test%28jQuery%28this%29.attr%28%27href%27%29%29%20%7D%29%3B%0A%0Athumbnails.addClass%28%22fancybox%22%29.attr%28%22rel%22%2C%22fancybox%22%29.getTitle%28%29%3B%0AjQuery%28%22a.fancybox%22%29.fancybox%28%7B%0A%20%20%20%20%27cyclic%27%3A%20true%2C%0A%20%20%20%20%27autoScale%27%3A%20true%2C%0A%20%20%20%20%27padding%27%3A%2010%2C%0A%20%20%20%20%27opacity%27%3A%20true%2C%0A%20%20%20%20%27speedIn%27%3A%20500%2C%0A%20%20%20%20%27speedOut%27%3A%20500%2C%0A%20%20%20%20%27changeSpeed%27%3A%20300%2C%0A%20%20%20%20%27overlayShow%27%3A%20true%2C%0A%20%20%20%20%27overlayOpacity%27%3A%20%220.3%22%2C%0A%20%20%20%20%27overlayColor%27%3A%20%22%23666666%22%2C%0A%20%20%20%20%27titleShow%27%3A%20true%2C%0A%20%20%20%20%27titlePosition%27%3A%20%27inside%27%2C%0A%20%20%20%20%27enableEscapeButton%27%3A%20true%2C%0A%20%20%20%20%27showCloseButton%27%3A%20true%2C%0A%20%20%20%20%27showNavArrows%27%3A%20true%2C%0A%20%20%20%20%27hideOnOverlayClick%27%3A%20true%2C%0A%20%20%20%20%27hideOnContentClick%27%3A%20false%2C%0A%20%20%20%20%27width%27%3A%20560%2C%0A%20%20%20%20%27height%27%3A%20340%2C%0A%20%20%20%20%27transitionIn%27%3A%20%22elastic%22%2C%0A%20%20%20%20%27transitionOut%27%3A%20%22elastic%22%2C%0A%20%20%20%20%27centerOnScroll%27%3A%20true%0A%7D%29%3B%0A%0A%0A%7D%29%0A%3C/script%3E%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

09-04-2013 22:13:15
Или вот так, названия пунктов в коде меню а сами скрипты в вкладке Справка:

Выделить код

Код:

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%3Eeksperimental%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bcustombuttons-stdicon-4%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20menuPopup.showPopup%28this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%7D%3B%0A%0A%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20................................%0Avar%20section%20%3D%20%22%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%22%3B%0Asection%20%3D%20%22%5Cn%22%20+%20section%20+%20%22%5Cn%22%3B%0Avar%20item%20%3D%20this.Help.split%28%20section%20%29%3B%0A%0Avar%20node%20%3D%20document.getElementById%28this.id%20+%20%22-menuPopup%22%29%3B%0Aif%20%28%20node%20%26%26%20node.parentNode%20%29%20node.parentNode.removeChild%28node%29%3B%20//%20%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0434%u0443%u0431%u043B%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u043C%u0435%u043D%u044E%0A%0Avar%20menuPopup%20%3D%20document.getElementById%28%22mainPopupSet%22%29.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0AmenuPopup.id%20%3D%20this.id%20+%20%22-menuPopup%22%3B%0A%0Avar%20array%20%3D%20%5B%0A%20%20%20%20%22scripts%201%22%2C%0A%20%20%20%20%22scripts%202%22%2C%0A%20%20%20%20%22scripts%20qwerty%22%2C%0A%20%20%20%20%22scripts%2044%2055%2066%22%2C%20%20%20%20%0A%20%20%20%20%22separator%22%2C%0A%20%20%20%20%22scripts%20some%201%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%5D%3B%0A%0Avar%20node%20%3D%20document.getElementById%28this.id%20+%20%22-menuPopup%22%29%3B%0Aif%20%28%20node%20%26%26%20node.parentNode%20%29%20node.parentNode.removeChild%28node%29%3B%20//%20%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0434%u0443%u0431%u043B%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u043C%u0435%u043D%u044E%0A%0Avar%20menuPopup%20%3D%20document.getElementById%28%22mainPopupSet%22%29.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0AmenuPopup.id%20%3D%20this.id%20+%20%22-menuPopup%22%3B%0Avar%20i%20%3D%200%3B%0Aarray.forEach%28function%28%20m%20%29%20%7B%0A%20%20%20%20%20if%20%28%20m%20%3D%3D%20%22separator%22%20%29%20%7B%20menuPopup.appendChild%28%20document.createElement%28%22menuseparator%22%29%20%29%3B%20return%20%7D%3B%20%0A%20%20%20%20%20var%20menuItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20%20menuItem.setAttribute%28%22label%22%2C%20m%20%29%3B%20%0A%20%20%20%20%20menuItem.setAttribute%28%22value%22%2C%20i++%20%29%3B%20%0A%20%20%20%20%20menuItem.addEventListener%28%22command%22%2C%20insertOrCopyText%2C%20false%29%3B%20%0A%20%20%20%20%20menuPopup.appendChild%28%20menuItem%20%29%3B%0A%7D%29%3B%0A//this.type%20%3D%20%22menu%22%3B%20%0A%0A%0A%0A//%20%u0421%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0435%20%u043F%u043E%u043B%u0435%20%u0438%u043B%u0438%20%u0441%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0438%u0437%20%u043C%u0435%u043D%u044E%20%20................................%0Afunction%20insertOrCopyText%28%29%20%7B%20%0A%0A%20%20%20var%20text%20%3D%20item%5Bthis.value%5D%3B%0A%20%20%20%0A%20%20%20try%20%7B%20document.commandDispatcher.focusedElement.type%3B%20%7D%0A%20%20%20catch%28e%29%20%7B%20gClipboard.write%28%20text%29%3B%20return%20%7D%3B%0A%20%20%20%0A%20%20%20var%20cmd%20%3D%20%22cmd_insertText%22%3B%0A%20%20%20var%20controller%20%3D%20document.commandDispatcher.getControllerForCommand%28cmd%29%3B%0A%20%20%20if%20%28%20controller%20%26%26%20controller.isCommandEnabled%28cmd%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20var%20controller%20%3D%20controller.QueryInterface%28Components.interfaces.nsICommandController%29%3B%0A%20%20%20%20%20%20%20%20var%20params%20%3D%20Components.classes%5B%22@mozilla.org/embedcomp/command-params%3B1%22%5D.createInstance%28Components.interfaces.nsICommandParams%29%3B%0A%20%20%20%20%20%20%20%20params.setStringValue%28%22state_data%22%2C%20text%29%3B%0A%20%20%20%20%20%20%20%20controller.doCommandWithParams%28cmd%2C%20params%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%0A%0A%0A%0A%0A%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%5BtoggleImage%28%29%3B%0Avar%20ps%20%3D%20Cc%5B%22@mozilla.org/preferences-service%3B1%22%5D.getService%28Ci.nsIPrefBranch%29.QueryInterface%28Ci.nsIPrefBranch2%29%3B%0Aps.addObserver%28%20s%2C%20toggleImage%2C%20false%20%29%3B%0Athis.onDestroy%20%3D%20function%28%29%20%7B%0A%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%0A%20%20%20%20%20%20%20if%20%28%20%21%21gFindBar._findField.style.color%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20gFindBar.getElement%28%27highlight%27%29.setAttribute%28%22checked%22%2C%20%22true%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20gFindBar._findField.removeAttribute%28%22style%22%29%0A%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%0A%20%20%20var%20mItem%20%3D%20e.target%3B%0A%20%20%20var%20value%20%3D%20mItem.getAttribute%28%22value%22%29%3B%0A%20%20%20var%20label%20%3D%20mItem.getAttribute%28%22label%22%29%3B%0A%20%20%20var%20image%20%3D%20mItem.getAttribute%28%22image%22%29%3B%0A%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%0A%20%7B%20label%3A%20%27%u0410%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%27%2C%20value%3A%20%27FindBar.Highlight%27%2C%20func%3A%20toggleAttribute%2C%20cek%3A%27%27%7D%2C%0A%20%20%7B%20label%3A%20%27%u0410%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%20%u0432%20%u0441%u0441%u044B%u043B%u043A%u0430%u0445%27%2C%20value%3A%20%27FindBar.Highlight.Link%27%2C%20func%3A%20Highlight%2C%20cek%3A%27%27%7D%2C%0A%20%20%7B%20label%3A%20%27%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0434%u043B%u044F%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%27%2C%20value%3A%20%27add%27%2C%20func%3A%20toggleHighlightValue%20%7D%2C%0A%20%20%7B%20label%3A%20%27%u0421%u0431%u0440%u043E%u0441%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0434%u043B%u044F%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%27%2C%20value%3A%20%27clear%27%2C%20func%3A%20toggleHighlightValue%20%7D%2C%0A%20%20%7B%20label%3A%20%27%u0418%u0437%u043C%u0435%u043D%u0438%u0442%u044C%20%u0446%u0432%u0435%u0442%3A%20%7C%23ef0fff%7C%20%u0434%u043B%u044F%20%u0430%u0432%u0442%u043E%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u0438%u0435%27%2C%20value%3A%20%27ui.textHighlightBackground%27%2C%20change%3A%27%27%7D%0A%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%u25BA%0AjQuery%28function%28%29%7B%0A%0AjQuery.fn.getTitle%20%3D%20function%28%29%20%7B%20//%20Copy%20the%20title%20of%20every%20IMG%20tag%20and%20add%20it%20to%20its%20parent%20A%20so%20that%20fancybox%20can%20show%20titles%0A%20%20%20%20var%20arr%20%3D%20jQuery%28%22a.fancybox%22%29%3B%0A%20%20%20%20jQuery.each%28arr%2C%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20var%20title%20%3D%20jQuery%28this%29.children%28%22img%22%29.attr%28%22title%22%29%3B%0A%20%20%20%20%20%20%20%20jQuery%28this%29.attr%28%27title%27%2Ctitle%29%3B%0A%20%20%20%20%7D%29%0A%7D%0A%0A//%20Supported%20file%20extensions%0Avar%20thumbnails%20%3D%20jQuery%28%22a%3Ahas%28img%29%22%29.not%28%22.nolightbox%22%29.filter%28%20function%28%29%20%7B%20return%20/%5C.%28jpe%3Fg%7Cpng%7Cgif%7Cbmp%29%24/i.test%28jQuery%28this%29.attr%28%27href%27%29%29%20%7D%29%3B%0A%0Athumbnails.addClass%28%22fancybox%22%29.attr%28%22rel%22%2C%22fancybox%22%29.getTitle%28%29%3B%0AjQuery%28%22a.fancybox%22%29.fancybox%28%7B%0A%20%20%20%20%27cyclic%27%3A%20true%2C%0A%20%20%20%20%27autoScale%27%3A%20true%2C%0A%20%20%20%20%27padding%27%3A%2010%2C%0A%20%20%20%20%27opacity%27%3A%20true%2C%0A%20%20%20%20%27speedIn%27%3A%20500%2C%0A%20%20%20%20%27speedOut%27%3A%20500%2C%0A%20%20%20%20%27changeSpeed%27%3A%20300%2C%0A%20%20%20%20%27overlayShow%27%3A%20true%2C%0A%20%20%20%20%27overlayOpacity%27%3A%20%220.3%22%2C%0A%20%20%20%20%27overlayColor%27%3A%20%22%23666666%22%2C%0A%20%20%20%20%27titleShow%27%3A%20true%2C%0A%20%20%20%20%27titlePosition%27%3A%20%27inside%27%2C%0A%20%20%20%20%27enableEscapeButton%27%3A%20true%2C%0A%20%20%20%20%27showCloseButton%27%3A%20true%2C%0A%20%20%20%20%27showNavArrows%27%3A%20true%2C%0A%20%20%20%20%27hideOnOverlayClick%27%3A%20true%2C%0A%20%20%20%20%27hideOnContentClick%27%3A%20false%2C%0A%20%20%20%20%27width%27%3A%20560%2C%0A%20%20%20%20%27height%27%3A%20340%2C%0A%20%20%20%20%27transitionIn%27%3A%20%22elastic%22%2C%0A%20%20%20%20%27transitionOut%27%3A%20%22elastic%22%2C%0A%20%20%20%20%27centerOnScroll%27%3A%20true%0A%7D%29%3B%0A%0A%0A%7D%29%0A%3C/script%3E%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
bunda1 пишет

Или вот так, названия пунктов в коде меню а сами скрипты в вкладке Справка:

спасиб! работает идеально! =) завтра первым же делом проверю на работе. Но проблем не должно возникнуть.
много секций(меню) навряд ли у кого будет.

bunda1
Очень хороша твоя кнопка VT ( Firefox10+ )
Но хочется поведения панели как в all-in-one_sidebar, т.е. чтоб панель пряталась вместе с содержимым нажатой кнопки на панели, например с закладками. А то приходиться вручную закрывать. Возможно ли так сделать? :/

rubel
Не я автор кнопки, а Dumby
Ты хочешь что бы VT панель автоматически пряталась месте с открытым боковым панелью, я правильно понял?

bunda1
Скорее имеется ввиду,что бы закрывалось вместе с тем ,что пооткрывалось через кнопки,находящиеся на панели.

VORON
А что может открыться через кнопки на панели, может меню у кнопок?

bunda1 пишет

через кнопки на панели, может меню у кнопок?

На вскидку(боковые) - закладки, журнал - есть в комплекте лисы. Возможно у автора и свои фичи типа дополнения и загрузки в боковой.
А так мне наоборот не нравится эта Идея. Тоже пользователь кнопки и скрываю её.

bunda1 пишет

VORON  А что может открыться через кнопки на панели, может меню у кнопок?

addons,extensions,settings,password manager и ещё куча всего остального может быть открыто из VT :)

VORON пишет

и ещё куча всего остального может быть открыто из VT

ясн - готовься писать правила =)

bunda1
Я на эту панель перенёс кнопки: Закладки, Журнал, Scrapbook и т.д.
Подвожу курсор влево, открывается VT, нажимаю, например,  кнопку Закладки, открываются Закладки, перемещаю курсор на страницу,VT прячется, а Закладки остались открытыми, занимая место на странице. Приходится их вручную закрывать.
Вот и хочется чтоб они прятались вместе с VT.

okkamas_knife
А ты как всегда полон идей :)

okkamas_knife
Не суди так строго, не так легко начинающему сделать кнопку которая делает что то больше чем просто открывает адрес. Сам помню как это. Я уже некоторые кнопки делаю автоматом не задумываясь. Правда последнее время пришел к выводу что наклепал столько кнопок что все время уходит на их поддержку, а для новых времени нет.

В кнопке Compact Menu( Firefox 4 + ) не работают опции Недавно закрытые вкладки и Недавно закрытые окна: не отображаются закрытые окна и вкладки.
79c79e47fd05e48e1af794c89b8bb414.jpeg

oopsididagainster пишет

В кнопке Compact Menu( Firefox 4 + ) не работают опции Недавно закрытые вкладки и Недавно закрытые окна: не отображаются закрытые окна и вкладки.

:/ А если так

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

Выделить код

Код:

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%3ECompact%20Menu%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBEAAAEAIACsBAAAFgAAACgAAAAQAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAMSAAcROg8hOGEvQV1hL0JdOQ4iOBIABxH7+/uBqKioqv7+/oAAAAAAAAAAAAAAAAAAAAAAAAAAAREABhB6PEx23HZ32+uLe/7rfGv/63tr/+uKev7vv7/tp52g10BAQP6vr6+z////fwAAAAAAAAAAAAAAAR0CEB3AaHK/629j/+FbVP/bUU7/10xK/9ZLSv/sp6X/26mm/0BAQP9AQED/QEBA/9jY2KH///9/AAAAAA8ABQ+6X22+1UpK/8Y2P/+8KDX/tB0v/6sZKf+uGCz/1pae/0BAQP9AQED/QEBA/0BAQP9AQED+8fHxkQAAAAJ0M0hzxz1G/7AYLv+lDCX/ng0b/5APD/+FFgL/1Zid/3BfYf9AQED/QEBA/0BAQP9AQED/QEBA/25ubtgPAAUPt0dc2KULJf+pFCb/tygu/7w1L/+FGAH/nSsW/8OSjf+gf3//qIKB/9aTlf/Vi5P/0YSR/9yosuzw7/CHMAobMLw2Sf60Iyz/xD41/9NSPv/cYUT/0188/+VwSf/IWzj/WhID/0kFAP9zGhT/yEM4/7grL/+9Okn+Nw0fNFYoOVLAOT3/zEg6/9xhRP/qdUv/64RR/+uNVf/rk1f/65NX/9t1Q/9mGQD/YhcE/9NeP//RTz3/xEA//1wsPVlWKDhR01dI/+BnRv/rf0//65JX/+ugXP/rqV7/661g/+utYf/McDH/gS4C/4UyD//CXjX/5G5I/9hdSf9dLD5YMAoaMOp+Zf7rgE//65dZ/+upX//rtGP/671n/+vBaP/rslz/rk4K/51CBf/rjUf/64RI/+uBTf/rhGf+NQweNA4ABg7Tdm3X65NY/+uqX//rumX/68Rq/+vMbf/r0G//68pn/+u+X//cgTD/67hi/+uuYf/rmlr/2Hxv2REABhAAAAACdTlIceudYP/rrV7/66xW/+vMbf/r03D/69Zw/+vVcP/r1HD/68tr/9x+Pv/rkUz/66xo/3Y7SXMAAAACAAAAAA8ABQ+2Z2O70WIX/+uEIf/rvVb/68JY/+vPbf/rsUn/68FX/+uVRf+dNBL/zGw0/8h7dL0PAAUPAAAAAAAAAAAAAAABHAEPHL5qWrzrr0r/69CA/+vQgf/r3qv/696r/+vNgP/rrnb/rEgo/6VXW70dAg8cAAAAAQAAAAAAAAAAAAAAAAAAAAEPAAUPdztFceiUcNjrz47+69yw/+vUmf/ryIT+03pe2XIzRHMPAAUPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIPAAUPMgscMlcpOlNYKTlUMwscMg8ABQ8AAAACAAAAAAAAAAAAAAAAAAAAAP//rEHwA6xBwAGsQYAArEGAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEGAAaxBgAGsQcADrEHwD6xB%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u0421%u0442%u0438%u043B%u044C%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u041F%u0430%u043D%u0435%u043B%u044C%20%u043C%u0435%u043D%u044E%20%u0438%20%u043A%u043D%u043E%u043F%u043A%u0443%20Firefox%20..............%0Aconst%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%20%20%0Avar%20css%20%3D%20%27%5C%0A%23toolbar-menubar%20%7B%20-moz-appearance%3A%20none%20%21important%3B%20display%20%3A%20none%20%21important%3B%20%7D%5C%0A%23titlebar-content%20%23appmenu-button%20%7B%20display%3A%20none%20%21important%3B%20%7D%5C%0A%23TabsToolbar%20hbox.titlebar-placeholder%5Btype%3D%22appmenu-button%22%5D%20%7B%5C%0Adisplay%3A%20none%20%21important%3B%5C%0A%7D%5C%0A%27%3B%0A%0Avar%20uri%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28css%29%29%3B%0Asss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0Athis.onDestroy%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20if%20%28%20sss.sheetRegistered%28uri%2C%20sss.AGENT_SHEET%29%20%29%20sss.unregisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bconst%20ids%20%3D%20%5B%0A%09%22file-menu%22%2C%0A%09%22edit-menu%22%2C%0A%09%22view-menu%22%2C%0A%09%22bookmarksMenu%22%2C%0A%09%22history-menu%22%2C%0A%09%22tools-menu%22%2C%0A%09%22helpMenu%22%0A%5D%3B%0Aconst%20id%20%3D%20%22Compact-Menu-menupopup%22%3B%0Avar%20popup%20%3D%20document.getElementById%28id%29%3B%0Aif%20%28%21popup%29%20%7B%0A%09popup%20%3D%20this.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0A%09const%20attrs%20%3D%20%7B%0A%09%09id%3A%20id%2C%0A%09%09position%3A%20%22after_start%22%2C%0A%09%09oncontextmenu%3A%20%22event.preventDefault%28%29%22%2C%0A%09%09oncommand%3A%20%22event.stopPropagation%28%29%22%2C%0A%09%7D%3B%0A%09for%20%28var%20attr%20in%20attrs%29%20popup.setAttribute%28attr%2C%20attrs%5Battr%5D%29%3B%0A%0A%09ids.forEach%28function%28id%29%20%7B%0A%09%09var%20clonedMenu%20%3D%20document.getElementById%28id%29.cloneNode%28true%29%3B%0A%09%09clonedMenu.hidden%20%3D%20false%3B%0A%09%09popup.appendChild%28clonedMenu%29%3B%0A%09%7D%29%3B%0A%09if%20%28ids.indexOf%28%22history-menu%22%29%20%21%3D%20-1%29%20%7B%0A%09%09%5B%22%22%2C%20%22Window%22%5D.forEach%28function%28str%29%20%7B%0A%09%09%09var%20node%20%3D%20popup.getElementsByAttribute%28%22id%22%2C%20%22historyUndo%22%20+%20str%20+%20%22Popup%22%29%5B0%5D%3B%0A%09%09%09var%20attr%20%3D%20node.getAttribute%28%22onpopupshowing%22%29%3B%0A%09%09%09node.setAttribute%28%22onpopupshowing%22%2C%20%22this.parentNode.parentNode.parentNode%22%20+%20attr.substring%2839%29%29%3B%0A%09%09%7D%29%3B%0A%09%7D%0A%7D%0Apopup.openPopup%28this%29%3B%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Dumby
А насчёт кнопки VT возможно ли сделать, как я просил выше?

Dumby пишет
oopsididagainster пишет

В кнопке Compact Menu( Firefox 4 + ) не работают опции Недавно закрытые вкладки и Недавно закрытые окна: не отображаются закрытые окна и вкладки.

:/ А если так

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

Выделить код

Код:

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%3ECompact%20Menu%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBEAAAEAIACsBAAAFgAAACgAAAAQAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAMSAAcROg8hOGEvQV1hL0JdOQ4iOBIABxH7+/uBqKioqv7+/oAAAAAAAAAAAAAAAAAAAAAAAAAAAREABhB6PEx23HZ32+uLe/7rfGv/63tr/+uKev7vv7/tp52g10BAQP6vr6+z////fwAAAAAAAAAAAAAAAR0CEB3AaHK/629j/+FbVP/bUU7/10xK/9ZLSv/sp6X/26mm/0BAQP9AQED/QEBA/9jY2KH///9/AAAAAA8ABQ+6X22+1UpK/8Y2P/+8KDX/tB0v/6sZKf+uGCz/1pae/0BAQP9AQED/QEBA/0BAQP9AQED+8fHxkQAAAAJ0M0hzxz1G/7AYLv+lDCX/ng0b/5APD/+FFgL/1Zid/3BfYf9AQED/QEBA/0BAQP9AQED/QEBA/25ubtgPAAUPt0dc2KULJf+pFCb/tygu/7w1L/+FGAH/nSsW/8OSjf+gf3//qIKB/9aTlf/Vi5P/0YSR/9yosuzw7/CHMAobMLw2Sf60Iyz/xD41/9NSPv/cYUT/0188/+VwSf/IWzj/WhID/0kFAP9zGhT/yEM4/7grL/+9Okn+Nw0fNFYoOVLAOT3/zEg6/9xhRP/qdUv/64RR/+uNVf/rk1f/65NX/9t1Q/9mGQD/YhcE/9NeP//RTz3/xEA//1wsPVlWKDhR01dI/+BnRv/rf0//65JX/+ugXP/rqV7/661g/+utYf/McDH/gS4C/4UyD//CXjX/5G5I/9hdSf9dLD5YMAoaMOp+Zf7rgE//65dZ/+upX//rtGP/671n/+vBaP/rslz/rk4K/51CBf/rjUf/64RI/+uBTf/rhGf+NQweNA4ABg7Tdm3X65NY/+uqX//rumX/68Rq/+vMbf/r0G//68pn/+u+X//cgTD/67hi/+uuYf/rmlr/2Hxv2REABhAAAAACdTlIceudYP/rrV7/66xW/+vMbf/r03D/69Zw/+vVcP/r1HD/68tr/9x+Pv/rkUz/66xo/3Y7SXMAAAACAAAAAA8ABQ+2Z2O70WIX/+uEIf/rvVb/68JY/+vPbf/rsUn/68FX/+uVRf+dNBL/zGw0/8h7dL0PAAUPAAAAAAAAAAAAAAABHAEPHL5qWrzrr0r/69CA/+vQgf/r3qv/696r/+vNgP/rrnb/rEgo/6VXW70dAg8cAAAAAQAAAAAAAAAAAAAAAAAAAAEPAAUPdztFceiUcNjrz47+69yw/+vUmf/ryIT+03pe2XIzRHMPAAUPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIPAAUPMgscMlcpOlNYKTlUMwscMg8ABQ8AAAACAAAAAAAAAAAAAAAAAAAAAP//rEHwA6xBwAGsQYAArEGAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEGAAaxBgAGsQcADrEHwD6xB%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u0421%u0442%u0438%u043B%u044C%20%u0443%u0434%u0430%u043B%u044F%u0435%u0442%20%u041F%u0430%u043D%u0435%u043B%u044C%20%u043C%u0435%u043D%u044E%20%u0438%20%u043A%u043D%u043E%u043F%u043A%u0443%20Firefox%20..............%0Aconst%20sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%3B%20%20%0Avar%20css%20%3D%20%27%5C%0A%23toolbar-menubar%20%7B%20-moz-appearance%3A%20none%20%21important%3B%20display%20%3A%20none%20%21important%3B%20%7D%5C%0A%23titlebar-content%20%23appmenu-button%20%7B%20display%3A%20none%20%21important%3B%20%7D%5C%0A%23TabsToolbar%20hbox.titlebar-placeholder%5Btype%3D%22appmenu-button%22%5D%20%7B%5C%0Adisplay%3A%20none%20%21important%3B%5C%0A%7D%5C%0A%27%3B%0A%0Avar%20uri%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28css%29%29%3B%0Asss.loadAndRegisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0Athis.onDestroy%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20if%20%28%20sss.sheetRegistered%28uri%2C%20sss.AGENT_SHEET%29%20%29%20sss.unregisterSheet%28uri%2C%20sss.AGENT_SHEET%29%3B%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bconst%20ids%20%3D%20%5B%0A%09%22file-menu%22%2C%0A%09%22edit-menu%22%2C%0A%09%22view-menu%22%2C%0A%09%22bookmarksMenu%22%2C%0A%09%22history-menu%22%2C%0A%09%22tools-menu%22%2C%0A%09%22helpMenu%22%0A%5D%3B%0Aconst%20id%20%3D%20%22Compact-Menu-menupopup%22%3B%0Avar%20popup%20%3D%20document.getElementById%28id%29%3B%0Aif%20%28%21popup%29%20%7B%0A%09popup%20%3D%20this.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0A%09const%20attrs%20%3D%20%7B%0A%09%09id%3A%20id%2C%0A%09%09position%3A%20%22after_start%22%2C%0A%09%09oncontextmenu%3A%20%22event.preventDefault%28%29%22%2C%0A%09%09oncommand%3A%20%22event.stopPropagation%28%29%22%2C%0A%09%7D%3B%0A%09for%20%28var%20attr%20in%20attrs%29%20popup.setAttribute%28attr%2C%20attrs%5Battr%5D%29%3B%0A%0A%09ids.forEach%28function%28id%29%20%7B%0A%09%09var%20clonedMenu%20%3D%20document.getElementById%28id%29.cloneNode%28true%29%3B%0A%09%09clonedMenu.hidden%20%3D%20false%3B%0A%09%09popup.appendChild%28clonedMenu%29%3B%0A%09%7D%29%3B%0A%09if%20%28ids.indexOf%28%22history-menu%22%29%20%21%3D%20-1%29%20%7B%0A%09%09%5B%22%22%2C%20%22Window%22%5D.forEach%28function%28str%29%20%7B%0A%09%09%09var%20node%20%3D%20popup.getElementsByAttribute%28%22id%22%2C%20%22historyUndo%22%20+%20str%20+%20%22Popup%22%29%5B0%5D%3B%0A%09%09%09var%20attr%20%3D%20node.getAttribute%28%22onpopupshowing%22%29%3B%0A%09%09%09node.setAttribute%28%22onpopupshowing%22%2C%20%22this.parentNode.parentNode.parentNode%22%20+%20attr.substring%2839%29%29%3B%0A%09%09%7D%29%3B%0A%09%7D%0A%7D%0Apopup.openPopup%28this%29%3B%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Так работает.
Спасибо :)

rubel пишет

А насчёт кнопки VT возможно ли сделать, как я просил выше?

Попробовать то можно, только не понял что.
Нужно закрывать sidebar, если он открыт с VT ?
Если да, то закрывать в какой момент времени, или, при каком положении мыши ?
И что делать, если sidebar уже был открыт, всё равно закрывать, или ещё как ?

Dumby
Мне хотелось бы так:
Нужно закрывать sidebar, если он открыт с VT, закрывать когда курсор мыши убрал с  sidebar'a на страницу,
если sidebar уже был открыт, всё равно закрывать.Такое поведение боковой панели сделано в Maxthon'e.
Спасибо.

rubel

Попробуй добавить это в самый конец кода

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

Выделить код

Код:

function n(id) document.getElementById(id);
const page = n("content"), box = n("sidebar-box"), sidebar = n("sidebar");
var tvtc = 0;
function onSBL(e) {
    var time = Date.now();
    if (time - tvtc > 800) return;
    addEventListener("mouseover", function onMO() {
        removeEventListener("mouseover", onMO, false, page);
        if (box.hidden) return;
        var id = box.getAttribute("sidebarcommand") || "viewBookmarksSidebar";
        n(id).setAttribute("checked", true);
        toggleSidebar(id);
    }, false, page);
}
function onVTC(e) {
    var time = Date.now();
    for (var node = e.target; node; node = node.parentNode) {
        if (node == toolbar) {
            tvtc = time;
            break;
        }
    }
}
const data = [
    ["DOMContentLoaded", onSBL, false, sidebar],
    ["click", onVTC, false, window],
    ["command", onVTC, false, window]
];
function ael(add) {
    data.forEach(function(args) {
        (add ? addEventListener : removeEventListener).apply(this, args);
    });
}
ael(true);
addDestructor(function() { ael(false) });

Dumby

Попробуй добавить это в самый конец кода

Прекрасно всё получилось, именно так, как мне и хотелось. Огромное спасибо!
Вы мастер своего дела. :)

Dumby
А можно чуть увеличить время скрытия  sidebar'a ?

okkamas_knife пишет

ща ради интереса выдав это за головоломку послал код знакомой которая в програмировании ни в зуб ногой

Эх эх.... расшифрую
const showDelay = 250; - отвечает за появление, но не скрытие.

А стоит лишь убрать мышку все тут же исчезнет:

Выделить код

Код:

if (!toolbar.hasAttribute("autohide")) {
    browser.addEventListener("mousemove", collapser, false);
}
else toolbar.setAttribute("autohide", "true");

lock();

Редактирование функции ни к чему не приводит видимому:

Выделить код

Код:

var tvtc = 10000;
function onSBL(e) {
    var time = Date.now();
    if (time - tvtc > 8000000) return;

Как узнать какая команда отвечает за опцию Настроить ?
2bd709810203e976c56b22977e583ed7.jpeg
Инспектором не получается подобраться.
Хотя может у кого-то есть кнопка открывающая настройки интерфейса ? :)

Вот эта настроить и есть настройки интерфейса :usch:

14-04-2013 12:54:32

Ещё так можно
kiss_51kb.1365929501.png

и так №11

okkamas_knife пишет

получил вполне логичный ответ - Наверно циферку 800? она там одна.

Это как раз я попробовал в первую очередь и как и у feas ничего не меняется.
Поэтому и прошу автора.

feas
В смысле, я хочу сделать кнопку и нужна команда(джаваскрипт) для помещения в кнопку.

feas пишет

можнои так №11

То что нужно!
Спасибо :)

rubel пишет

А можно чуть увеличить время скрытия  sidebar'a ?

Можно попробовать вместо той добавки эту.
Время скрытия в первой строчке.

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

Выделить код

Код:

const delay = 1000;

function n(id) document.getElementById(id);
const page = n("content"), box = n("sidebar-box"), sidebar = n("sidebar");
var tvtc, timeout;

function listenMO(node, listen) {
    var func = node == box ? onBMO : onPMO;
    (listen ? addEventListener : removeEventListener)
    .apply(this, ["mouseover", func, false, node]);
}
function onPMO() {
    listenMO(page, false);
    timeout = setTimeout(hideSB, delay);
    listenMO(box, true);
}
function onBMO() {
    listenMO(box, false);
    clearTimeout(timeout);
    listenMO(page, true);
}
function hideSB() {
    listenMO(box, false);
    if (box.hidden) return;
    var id = box.getAttribute("sidebarcommand") || "viewBookmarksSidebar";
    n(id).setAttribute("checked", true);
    toggleSidebar(id);
}
function onSBL() {
    var time = Date.now();
    listenMO(page, false);
    if (time - tvtc < 800) listenMO(page, true);
}
function onVTC(e) {
    var time = Date.now();
    for (var node = e.target; node; node = node.parentNode) {
        if (node != toolbar) continue;
        tvtc = time;
        break;
    }
}
function ael(add) {
    [    ["DOMContentLoaded", onSBL, false, sidebar],
        ["click", onVTC, false, window],
        ["command", onVTC, false, window]
    ].forEach(function(args) {
        (add ? addEventListener : removeEventListener).apply(this, args);
    });
}
ael(true);
addDestructor(function() { ael(false) });

okkamas_knife пишет

задержку которую он делает

Хорошо подшутил над знакомой - спросил о том, чего нет :)

Dumby

Время скрытия в первой строчке.

Отлично! Я поставил const delay = 400. Теперь очень хорошо. Спасибо ещё раз.

bunda1
Поставил кнопку Context Search(Firefox 4+)
Но она вообще не работает никак. Вроде строка в контекстном меню появляется но без надписи и список поисковиков не появляется.
img5f.gif

Починить можно?

rubel
Попробуй в коде заменить все    contextMenuSearchText    на    contextMenuSearch

Dumby пишет

Попробуй в коде заменить все    contextMenuSearchText    на    contextMenuSearch

заработало, чтоб остальные не мучились:

Выделить код

Код:

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%3EContext%20Search%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bcustombuttons-stdicon-1%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//Context%20Search......................................%0A%0Aif%20%28window.contextSearcher%29%20%7B%0A%20%20window.contextSearcher.destroy%28%29%3B%0A%20%20delete%20window.contextSearcher%3B%0A%7D%0A%0Awindow.contextSearcher%20%3D%20%7B%0A%20%20NEW_TAB%3A%20true%2C%0A%0A%20%20_regexp%3A%20%7B%0A%20%20%20%20hiragana%3A%20%22%5B%5C%5Cu3040-%5C%5Cu309F%5D%22%2C%0A%20%20%20%20katakana%3A%20%22%5B%5C%5Cu30A0-%5C%5Cu30FF%5D%22%2C%0A%20%20%20%20kanji%20%20%20%3A%20%22%5B%5C%5Cu4E00-%5C%5Cu9FA0%5D%22%2C%0A%20%20%20%20//suuji%20%20%20%3A%20%22%5B0-9_./%2C%25-%5D%22%2C%0A%20%20%20%20eisu_han%3A%20%22%5Ba-zA-Z0-9_-%5D%22%2C%0A%20%20%20%20eisu_zen%3A%20%22%5B%5C%5CuFF41-%5C%5CuFF5A%5C%5CuFF21-%5C%5CuFF3A%5C%5CuFF10-%5C%5CuFF19%5D%22%2C%0A%20%20%20%20hankaku%20%3A%20%22%5B%5C%5CuFF00-%5C%5CuFFEF%5D%22%2C%0A%20%20%7D%2C%0A%0A%20%20get%20startReg%28%29%20%7B%0A%20%20%20%20let%20reg%20%3D%20%7B%7D%3B%0A%20%20%20%20for%28let%20n%20in%20this._regexp%29%20%7B%0A%20%20%20%20%20%20reg%5Bn%5D%20%3D%20new%20RegExp%28%27%5E%27%20+%20this._regexp%5Bn%5D%20+%20%27+%27%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20delete%20this.startReg%3B%0A%20%20%20%20return%20this.startReg%20%3D%20reg%3B%0A%20%20%7D%2C%0A%20%20get%20endReg%28%29%20%7B%0A%20%20%20%20let%20reg%20%3D%20%7B%7D%3B%0A%20%20%20%20for%28let%20n%20in%20this._regexp%29%20%7B%0A%20%20%20%20%20%20reg%5Bn%5D%20%3D%20new%20RegExp%28this._regexp%5Bn%5D%20+%20%27+%24%27%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20delete%20this.endReg%3B%0A%20%20%20%20return%20this.endReg%20%3D%20reg%3B%0A%20%20%7D%2C%0A%20%20searchText%3A%20%27%27%2C%0A%20%20searchEngines%3A%20%5B%5D%2C%0A%20%20init%3A%20function%28%29%7B%0A%20%20%20%20this.searchService%20%3D%20Cc%5B%22@mozilla.org/browser/search-service%3B1%22%5D.getService%28Ci.nsIBrowserSearchService%29%3B%0A%20%20%20%20this.context%20%3D%20document.getElementById%28%27contentAreaContextMenu%27%29%3B%0A%20%20%20%20var%20searchselect%20%3D%20document.getElementById%28%27context-searchselect%27%29%3B%0A%20%20%20%20searchselect.style.display%20%3D%20%27none%27%3B%0A%0A%20%20%20%20this.menu%20%3D%20this.context.insertBefore%28document.createElement%28%27splitmenu%27%29%2C%20searchselect%29%3B%0A%20%20%20%20this.menu.setAttribute%28%27id%27%2C%20%27context-searcher%27%29%3B%0A%20%20%20%20this.menu.setAttribute%28%27accesskey%27%2C%20gNavigatorBundle.getString%28%22contextMenuSearch.accesskey%22%29%29%3B%0A%20%20%20%20this.menu.setAttribute%28%27oncommand%27%2C%20%27contextSearcher.command%28event%29%3B%27%29%3B%0A%20%20%20%20this.menu.setAttribute%28%27onclick%27%2C%20%27checkForMiddleClick%28this%2C%20event%29%3B%27%29%3B%0A%20%20%20%20this.menu.setAttribute%28%27iconic%27%2C%20%27true%27%29%3B%0A%0A%20%20%20%20this.popup%20%3D%20this.menu.appendChild%28%20document.createElement%28%27menupopup%27%29%20%29%3B%0A%0A%20%20%20%20//%20splitmenu%0A%20%20%20%20this.dummy%20%3D%20this.context.insertBefore%28document.createElement%28%27menuitem%27%29%2C%20searchselect%29%3B%0A%20%20%20%20this.dummy.setAttribute%28%27id%27%2C%20%27context-searcher-dummy%27%29%3B%0A%20%20%20%20this.dummy.setAttribute%28%27command%27%2C%20%27context-searcher%27%29%3B%0A%20%20%20%20this.dummy.setAttribute%28%27accesskey%27%2C%20gNavigatorBundle.getString%28%22contextMenuSearch.accesskey%22%29%29%3B%0A%20%20%20%20this.dummy.collapsed%20%3D%20true%3B%0A%0A%20%20%20%20this.context.addEventListener%28%27popupshowing%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20this.menu.addEventListener%28%27DOMMouseScroll%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20gBrowser.mPanelContainer.addEventListener%28%27click%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20window.addEventListener%28%27unload%27%2C%20this%2C%20false%29%3B%0A%0A%20%20%20this.menu._menuDelay%20%3D%20300%3B%0A%20%20%7D%2C%0A%0A%20%20uninit%3A%20function%28%29%20%7B%0A%20%20%20%20this.context.removeEventListener%28%27popupshowing%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20this.menu.removeEventListener%28%27DOMMouseScroll%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20gBrowser.mPanelContainer.removeEventListener%28%27click%27%2C%20this%2C%20false%29%3B%0A%20%20%20%20window.removeEventListener%28%27unload%27%2C%20this%2C%20false%29%3B%0A%20%20%7D%2C%0A%0A%20%20destroy%3A%20function%28%29%7B%0A%20%20%20%20this.uninit%28%29%3B%0A%20%20%20%20document.getElementById%28%27context-searchselect%27%29.style.removeProperty%28%27display%27%29%3B%0A%20%20%20%20var%20m%20%3D%20document.getElementById%28%27context-searcher%27%29%3B%0A%20%20%20%20if%20%28m%29%0A%20%20%20%20%20%20m.parentNode.removeChild%28m%29%3B%0A%20%20%20%20m%20%3D%20document.getElementById%28%27context-searcher-dummy%27%29%3B%0A%20%20%20%20if%20%28m%29%0A%20%20%20%20%20%20m.parentNode.removeChild%28m%29%3B%0A%20%20%7D%2C%0A%0A%20%20handleEvent%3A%20function%28event%29%20%7B%0A%20%20%20%20if%20%28this%5Bevent.type%5D%29%0A%20%20%20%20%20%20this%5Bevent.type%5D%28event%29%3B%0A%20%20%7D%2C%0A%20%20%0A%20%20unload%3A%20function%28e%29%7B%0A%20%20%20%20this.uninit%28%29%3B%0A%20%20%7D%2C%0A%0A%20%20DOMMouseScroll%3A%20function%28e%29%20%7B%0A%20%20%20%20this.searchEngines%20%3D%20this.searchService.getVisibleEngines%28%7B%7D%29%3B%0A%20%20%20%20if%20%28%21this.searchEngines%20%7C%7C%20this.searchEngines.length%20%3D%3D%200%29%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20%0A%20%20%20%20var%20index%20%3D%20this.searchEngines.indexOf%28this.searchService.currentEngine%29%3B%0A%20%20%20//var%20newEngine%20%3D%20e.detail%20%3E%200%3F%0A%20%20%20//this.searchEngines%5Bindex+1%5D%20%7C%7C%20this.searchEngines%5B0%5D%3A%0A%20%20%20//this.searchEngines%5Bindex-1%5D%20%7C%7C%20this.searchEngines%5Bthis.searchEngines.length%20-1%5D%3B%0A%20%20%20%20var%20newEngine%20%3D%20e.detail%20%3E%200%3F%20this.searchEngines%5Bindex+1%5D%20%3A%20this.searchEngines%5Bindex-1%5D%3B%0A%20%20%20%20if%20%28%21newEngine%29%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20this.searchService.currentEngine%20%3D%20newEngine%3B%0A%20%20%20%20this.setMenuitem%28%29%3B%0A%20%20%7D%2C%0A%0A%20%20command%3A%20function%28e%29%7B%0A%20%20%20%20var%20target%20%3D%20e.target%3B%0A%20%20%20%20var%20engine%20%3D%20e.target.engine%20%7C%7C%20this.menu.engine%3B%0A%0A%20%20%20%20var%20submission%20%3D%20engine.getSubmission%28this.searchText%2C%20null%29%3B%0A%20%20%20%20if%20%28%21submission%29%0A%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20if%20%28%21this.NEW_TAB%20%7C%7C%20content.location.href%20%3D%3D%3D%20%27about%3Ablank%27%29%20%7B%0A%20%20%20%20%20%20loadURI%28submission.uri.spec%2C%20null%2C%20submission.postData%2C%20false%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20gBrowser.selectedTab%20%3D%20gBrowser.addTab%28submission.uri.spec%2C%20%7B%0A%20%20%20%20%20%20%20%20postData%3A%20submission.postData%2C%0A%20%20%20%20%20%20%20%20ownerTab%3A%20gBrowser.mCurrentTab%2C%0A%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20click%3A%20function%28event%29%20%7B%0A%20%20%20%20if%20%28event.button%20%3D%3D%3D%202%29%20%7B%0A%20%20%20%20%20%20this._clickNode%20%3D%20event.rangeParent%3B%0A%20%20%20%20%20%20this._clickOffset%20%3D%20event.rangeOffset%3B%0A%20%20%20%20%20%20this._clientX%20%3D%20event.clientX%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20this._clickNode%20%3D%20null%3B%0A%20%20%20%20%20%20this._clickOffset%20%3D%200%3B%0A%20%20%20%20%20%20this._clientX%20%3D%200%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%0A%20%20setMenuitem%3A%20function%28%29%20%7B%0A%20%20%20%20var%20currentEngine%20%3D%20this.searchService.currentEngine%3B%0A%20%20%20%20var%20l%20%3D%20this.searchText.length%20%3E%2016%3F%20this.searchText.substr%280%2C%2016%29%20+%20%27...%27%20%3A%20this.searchText%3B%0A%20%20%20%20this.menu.engine%20%3D%20currentEngine%3B%0A%20%20%20%20this.menu.setAttribute%28%27label%27%2C%20gNavigatorBundle.getFormattedString%28%22contextMenuSearch%22%2C%20%5BcurrentEngine.name%2C%20l%5D%29%29%3B%0A%20%20%20%20if%20%28currentEngine.iconURI%29%0A%20%20%20%20%20%20this.menu.style.listStyleImage%20%3D%20%27url%28%22%27%20+%20currentEngine.iconURI.spec%20+%20%27%22%29%27%3B%0A%20%20%20%20else%20%0A%20%20%20%20%20%20this.menu.style.removeProperty%28%27list-style-image%27%29%3B%0A%20%20%7D%2C%0A%0A%20%20popupshowing%3A%20function%28e%29%7B%0A%20%20%20%20if%20%28e.target%20%21%3D%20this.context%29%20return%3B%0A%0A%20%20%20%20this.searchText%20%3D%20gContextMenu.isTextSelected%3F%20this.getBrowserSelection%28%29%3A%20%27%27%20%7C%7C%20%0A%20%20%20%20%20%20gContextMenu.onLink%3F%20gContextMenu.linkText%28%29%3A%20%27%27%20%7C%7C%20%0A%20%20%20%20%20%20gContextMenu.onTextInput%3F%20this.getTextInputSelection%28%29%20%3A%20%27%27%20%7C%7C%0A%20%20%20%20%20%20this.getCursorPositionText%28%29%3B%0A%0A%20%20%20%20if%20%28%21this.searchText%20%7C%7C%20%21/%5CS/.test%28this.searchText%29%29%20%7B%0A%20%20%20%20%20%20this.menu.hidden%20%3D%20true%3B%0A%20%20%20%20%20%20this.dummy.hidden%20%3D%20true%3B%0A%20%20%20%20%20%20return%3B%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28this.searchText.length%20%3E%20256%29%0A%20%20%20%20%20%20this.searchText%20%3D%20this.searchText.substr%280%2C%20256%29%3B%0A%20%20%20%20this.menu.hidden%20%3D%20false%3B%0A%20%20%20%20this.dummy.hidden%20%3D%20false%3B%0A%20%20%20%20%0A%20%20%20%20if%20%28%21this.popup.hasChildNodes%28%29%20%7C%7C%20e.ctrlKey%29%0A%20%20%20%20%20%20this.createMenuitem%28%29%3B%0A%20%20%20%20%0A%20%20%20%20this.setMenuitem%28%29%3B%0A%20%20%7D%2C%0A%20%20%0A%20%20createMenuitem%3A%20function%28%29%7B%0A%20%20%20%20this.searchEngines%20%3D%20this.searchService.getVisibleEngines%28%7B%7D%29%3B%0A%20%20%20%20if%20%28%21this.searchEngines%20%7C%7C%20this.searchEngines.length%20%3D%3D%200%29%0A%20%20%20%20%20%20return%3B%0A%0A%20%20%20%20var%20f%3B%0A%20%20%20%20while%20%28f%20%3D%20this.popup.firstChild%29%20%7B%0A%20%20%20%20%20%20this.popup.removeChild%28f%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20this.menu.engine%20%3D%20this.searchService.currentEngine%3B%0A%20%20%20%20if%20%28this.menu.engine.iconURI%29%0A%20%20%20%20%20%20this.menu.style.listStyleImage%20%3D%20%27url%28%22%27%20+%20this.menu.engine.iconURI.spec%20+%20%27%22%29%27%3B%0A%20%20%20%20else%20%0A%20%20%20%20%20%20this.menu.style.removeProperty%28%27list-style-image%27%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%2C%20s%20%3D%20this.searchEngines%2C%20l%20%3D%20s.length%3B%20i%20%3C%20l%3B%20i++%29%20%7B%0A%20%20%20%20%20%20var%20engine%20%3D%20s%5Bi%5D%3B%0A%20%20%20%20%20%20var%20m%20%3D%20document.createElement%28%27menuitem%27%29%3B%0A%20%20%20%20%20%20m.setAttribute%28%27label%27%2C%20engine.name%29%3B%0A%20%20%20%20%20%20if%20%28engine.iconURI%29%20%7B%0A%20%20%20%20%20%20%20%20m.setAttribute%28%27src%27%2C%20engine.iconURI.spec%29%3B%0A%20%20%20%20%20%20%20%20m.setAttribute%28%27class%27%2C%20%27menuitem-iconic%27%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20m.setAttribute%28%27oncommand%27%2C%20%27contextSearcher.command%28event%29%3B%27%29%3B%0A%20%20%20%20%20%20m.setAttribute%28%27onclick%27%2C%20%27checkForMiddleClick%28this%2C%20event%29%3B%27%29%3B%0A%20%20%20%20%20%20m.engine%20%3D%20engine%3B%0A%20%20%20%20%20%20this.popup.appendChild%28m%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%2C%0A%20%20%0A%20%20getBrowserSelection%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20win%20%3D%20document.commandDispatcher.focusedWindow%3B%0A%20%20%20%20var%20sel%20%3D%20win.getSelection%28%29%3B%0A%20%20%20%20var%20str%20%3D%20%27%27%3B%0A%20%20%20%20if%20%28sel.isCollapsed%29%0A%20%20%20%20%20%20return%20str%3B%0A%0A%20%20%20%20for%28var%20i%20%3D%200%2C%20l%20%3D%20sel.rangeCount%3B%20i%20%3C%20l%3B%20i++%29%20%7B%0A%20%20%20%20%20%20str%20+%3D%20sel.getRangeAt%28i%29%20+%20%27%20%27%3B%0A%20%20%20%20%7D%0A%20%20%20%20return%20str.replace%28/%5E%5Cs*%7C%5Cs*%24/g%2C%20%27%27%29.replace%28/%5Cs+/g%2C%20%27%20%27%29%3B%0A%20%20%7D%2C%0A%20%20%0A%20%20getTextInputSelection%3A%20function%20%28%29%20%7B%0A%20%20%20%20var%20elem%20%3D%20document.commandDispatcher.focusedElement%3B%0A%20%20%20%20var%20str%20%3D%20elem.value.slice%28elem.selectionStart%2C%20elem.selectionEnd%29%3B%0A%20%20%20%20return%20str.replace%28/%5E%5Cs*%7C%5Cs*%24/g%2C%20%27%27%29.replace%28/%5Cs+/g%2C%20%27%20%27%29%3B%0A%20%20%7D%2C%0A%0A%20%20getCursorPositionText%3A%20function%28%29%20%7B%0A%20%20%20%20var%20str%20%3D%20%22%22%3B%0A%20%20%20%20var%20node%20%3D%20this._clickNode%3B%0A%20%20%20%20if%20%28%21node%20%7C%7C%20node.nodeType%20%21%3D%3D%20Node.TEXT_NODE%29%0A%20%20%20%20%20%20return%20str%3B%0A%0A%20%20%20%20var%20offset%20%3D%20this._clickOffset%3B%0A%20%20%20%20var%20text%20%3D%20node.nodeValue%3B%0A%20%20%20%20if%20%28%21text%29%0A%20%20%20%20%20%20return%20str%3B%0A%0A%20%20%20%20var%20range%20%3D%20node.ownerDocument.createRange%28%29%3B%0A%20%20%20%20range.setStart%28node%2C%20offset%29%3B%0A%20%20%20%20var%20rect%20%3D%20range.getBoundingClientRect%28%29%3B%0A%20%20%20%20range.detach%28%29%3B%0A%0A%20%20%20%20if%20%28rect.left%20%3E%3D%20this._clientX%29%0A%20%20%20%20%20%20offset--%3B%0A%0A%20%20%20%20var%20current%20%3D%20text%5Boffset%5D%3B%0A%20%20%20%20var%20type%3B%0A%20%20%20%20for%20%28let%20n%20in%20this._regexp%29%20%7B%0A%20%20%20%20%20%20if%20%28this.endReg%5Bn%5D.test%28current%29%29%20%7B%0A%20%20%20%20%20%20%20%20type%20%3D%20n%3B%0A%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20if%20%28%21type%29%0A%20%20%20%20%20%20return%20str%3B%0A%0A%20%20%20%20var%20s%20%3D%20this.endReg%5Btype%5D.exec%28%20text.substr%280%2C%20offset%29%20%29%3B%0A%20%20%20%20if%20%28s%29%20str%20+%3D%20s%3B%0A%20%20%20%20s%20%3D%20this.startReg%5Btype%5D.exec%28%20text.substr%28offset%29%20%29%0A%20%20%20%20if%20%28s%29%20str%20+%3D%20s%3B%0A%0A%20%20%20%20if%20%28str.length%20%3D%3D%3D%201%29%20%7B%0A%20%20%20%20%20%20if%20%28type%20%3D%3D%3D%20%22kanji%22%29%20%7B%0A%20%20%20%20%20%20%20%20s%20%3D%20this.startReg%5B%22hiragana%22%5D.exec%28%20text.substr%28offset+1%29%20%29%3B%0A%20%20%20%20%20%20%20%20if%20%28s%29%20str%20+%3D%20s%3B%0A%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20return%20%22%22%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20return%20str%3B%0A%20%20%7D%2C%0A%0A%20%20log%3A%20function%28%29%20%7B%0A%20%20%20%20Application.console.log%28%22%5BcontextSearcher%5D%20%22%20+%20Array.slice%28arguments%29%29%3B%0A%20%20%7D%0A%7D%0A%0Awindow.contextSearcher.init%28%29%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

feas
Вобще, ранее уже кто-то исправлял эту кнопку (или совет был аналогичный), но пусть будет, раз людям надо :)

Dumby

Попробуй в коде заменить все    contextMenuSearchText    на    contextMenuSearch

Так и сделал, теперь прекрасно работает. Положил Код инициализации в кнопку Cookie Manager, в ней было пусто во вкладке Инициализация, не стал ставить отдельную кнопку feas'а.
Спасибо. :)

А можно соорудить такой код?

В адресную строку вставляется мой текст, за которым следует текущий урл. Ну и нажимается Энтер.

rbfyec пишет

В адресную строку вставляется мой текст, за которым следует текущий урл. Ну и нажимается Энтер.

Выделить код

Код:

gURLBar.value = "мой текст" + content.document.location;
gURLBar.focus();

var evt = document. createEvent ("KeyEvents");
evt.initKeyEvent("keypress", true, true, null, false, false, false, false, evt. DOM_VK_RETURN, 0 );
if ( document.activeElement.nodeName == "browser" )
     gBrowser.contentDocument.activeElement.dispatchEvent(evt);
else
     document. activeElement. dispatchEvent (evt);

bunda1, это именно то, что я хотел. Спасибо!

okkamas_knife, спасибо за ссылки, буду стараться разобраться :)

okkamas_knife пишет

bunda1
ну ты накрутил!!
там нужно то всего одну строчку

Выделить код

Код:

loadURI ("мой текст"+gURLBar.value)

А вот не работает этот код. Я получаю сообщение:

Формат адреса неверен

URL недействителен и не может быть загружен.

Адреса веб-сайтов обычно записываются в формате http://www.example.com/
Убедитесь, что вы используете в качестве разделителя прямую косую черту (т.е. /).

Можно как-то написать такой код, чтобы на определённом сайте, точнее на

скрытый текст
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.


при просмотре манги можно было нажать кнопку и все ссылки на изображения, относящиеся к конкретной главе, скопировались в буфер обмена, а то замучался каждую картинку сохранять вручную =)

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

okkamas_knife
Спасибо огромное, я тупанул, посмотрел фаер багом, а он как-то странно тег порезал, кроме ссылки первой картинки не видно больше ничего :dumb:

okkamas_knife пишет

rbfyec а вам для каких целей то? и что вы добавляете впереди?если вам для поиска используя кейворды то вместо кейворда пишите полный адрес запроса например если g - поиск в гугле то вместо loadURI ("g "+gURLBar.value)пишемloadURI ("http://www.google.com/search?q="+gURLBar.value)

Да, именно кейворды я и собирался подставлять :)
Ваш вариант с полным адресом работает. Но не со всеми ресурсами, с некоторыми даёт сбой.
А код, который предложил bunda1 работает с любыми сайтами. Безотказно, как часы!

В любом случае, спасибо большое за помощь!

Прошу сильно не пинать, пишу на яве вообще первый раз, может что-то упустил, не могу врубится, почему кнопка срабатывает через раз?.. :/

Может кто, что посоветует?

скрытый текст
проверить можно, например, тут:
Войдите или зарегистрируйтесь, чтобы увидеть скрытый текст.

Выделить код

Код:

/*CODE*/
var doc = content.document.body.innerHTML ;

gClipboard.clear() ;

// ---------------------------------------
var razdelit = '"fullimg":["' ;               // Сносим первую часть страницы, по "fullimg":["
var array_of_strings = doc.split(razdelit) ;
cut_string = array_of_strings[1] ;

doc = cut_string ;
// ---------------------------------------
var razdelit = '",]' ;                        // Сносим вторую часть страницы, начиная от ",] 
var array_of_strings = doc.split(razdelit) ;
cut_string = array_of_strings[0] ;

doc = cut_string ;
// ---------------------------------------
var i ;

var ending_str="" ;

var razdelit = '","' ; // Описываем разделители

var array_of_strings = doc.split(razdelit) ; // описываем массив ссылок разделённых razdelit


                                             // собирам окончательную строку из элементов массива
                                             // в конце каждой ссылки добавляем перенос строки -'\n'
for (i=0; i < array_of_strings.length; i++) {

    ending_str = ending_str + array_of_strings[i] + '\n' ;
    
} ;

gClipboard.write(ending_str) ;

alert("Ссылки скопированны в буфер обмена.");

okkamas_knife пишет

проставь алерты на каждом этапе для контроля переменных

Бред какой-то, напихал алертов на каждое действие, кнопка стала работать идеально... O_<"


Добавлено 18 апреля 2013 г. в 12:30

В общем фиг знает почему, но нормально работает такой вот код:

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

Выделить код

Код:

/*CODE*/
var doc = content.document.body.innerHTML ;

gClipboard.clear() ;

// ---------------------------------------
var razdelit = '"fullimg":["' ;               // Сносим первую часть страницы, по "fullimg":["
var array_of_strings = doc.split(razdelit) ;
var cut_string = array_of_strings[1] ;

var doc = cut_string ;

// ---------------------------------------
var razdelit = '",]' ;                        // Сносим вторую часть страницы, начиная от ",] 
var array_of_strings = doc.split(razdelit) ;
var cut_string = array_of_strings[0] ;

var doc = cut_string ;

// ---------------------------------------
var i ;

var ending_str="" ;

var razdelit = '","' ; // Описываем разделители


var array_of_strings = doc.split(razdelit) ; // описываем массив ссылок разделённых razdelit

alert("Ссылки скопированы в буфер обмена.");

                                             // собирам окончательную строку из элементов массива
                                             // в конце каждой ссылки добавляем перенос строки -'\n'
for (i=0; i < array_of_strings.length; i++) {

    ending_str = ending_str + array_of_strings[i] + '\n' ;
    
} ;

gClipboard.write(ending_str) ;


// alert("Ссылки скопированны в буфер обмена.");

http://forum.mozilla-russia.org/viewtopic.php?pid=446701#p446701
DXUi5Dua.jpg
на русский не хочет переводить, в чем может быть дело?

Zaycoff пишет

Прошу сильно не пинать

И меня тоже

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

Выделить код

Код:

/*CODE*/
var links = content.wrappedJSObject.data.fullimg.join("\r\n");
gClipboard.write(links);
alert("Ссылки скопированны в буфер обмена.\nВот они:\n" + links);


P.S. Если вопрос был про редирект, то может в Инициализацию
скрытый текст

Выделить код

Код:

const du = Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);
function vk(e) {
    var doc = e.target;
    if (doc.location.host != "vk.com") return;
    var br = du.getParentForNode(doc, true);
    var wn = br.webNavigation;
    wn.allowMetaRedirects = false;
    addEventListener("load", function onLoad() {
        removeEventListener("load", onLoad, true, br);
        wn.allowMetaRedirects = true;
    }, true, br);
}
addEventListener("DOMContentLoaded", vk, false, gBrowser);

Kiril__777 пишет

на русский не хочет переводить, в чем может быть дело?

intl.accept_languages;ru, en-US, en так? Больше причин не знаю, УМВР.

adidharma пишет

intl.accept_languages;ru, en-US, en

что-то я такого вообще не нахожу

Dumby
Ваа!! Как просто... спасибо огромное! :music:

И за вконтакт отдельная благодарность - очень полезная штука, если нужно только почитать его, а разрешать скрипты и логиниться не хочется =)

okkamas_knife
Проверил код кнопки на ESR 10.0.9 и 17.0.5 - глючит точно так же, ладно, фиг с ним, главное хоть так работает :rolleyes:

Kiril__777 пишет

что-то я такого вообще не нахожу

скрытый текст
А, ну да, ступил я, наверно. :dumb: У меня FF английский, с русифкатором, поэтому этот параметр есть. Просто, помнится у меня все кнопки для перевода начали глючить, причина оказалась, что после установки русика добавилось intl.accept_languages;ru, ru-RU, en-US, en
Как убрал ru-RU - стало всё нормально.

p.s. Данный параметр относится к этой настройке:
thumb_9481641_0.png

adidharma
вот так работает, спасибо за подсказку.

скрытый текст
где можно прочитать об этом ru-ru и где хранится эта настройка в профиле?
intl.accept_languages

Zaycoff пишет

И за вконтакт отдельная благодарность - очень полезная штука, если нужно только почитать его, а разрешать скрипты и логиниться не хочется =)

Это где такое?

voqabuhe пишет

Это где такое?

Dumby пишет

P.S. Если вопрос был про редирект, то может в Инициализацию

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

Выделить код

Код:

const du = Cc["@mozilla.org/inspector/dom-utils;1"].getService(Ci.inIDOMUtils);
function vk(e) {
    var doc = e.target;
    if (doc.location.host != "vk.com") return;
    var br = du.getParentForNode(doc, true);
    var wn = br.webNavigation;
    wn.allowMetaRedirects = false;
    addEventListener("load", function onLoad() {
        removeEventListener("load", onLoad, true, br);
        wn.allowMetaRedirects = true;
    }, true, br);
}
addEventListener("DOMContentLoaded", vk, false, gBrowser);

Если это код положить в инициализацию новой кнопки, то при посещении вконтакта можно будет не включать скрипты и куки, часть функционала конечно отвалится, но посты и всякое такое читать будет можно, а мне больше и не нужно, а то дают ссылку на статью во вконтате, а ему ещё и скрипты с куками подавай... бизобразие какой-то :music:

Как бы одну кнопку поправить, чтобы работала в [firefox] 21 и выше. Convert E4X не помогает. :(
Кнопка - Extensions Options Menu (открывает Дополнения и содержит меню со списком расширений, для быстрого доступа к настройкам, где её брал, уже не помню):

скрытый текст
код кнопки

Выделить код

Код:

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%3EExtensions%20Options%20Menu%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjU4NzIwMkI5QkNFNDExRTBCOEIwQzU3QzQyMDBGNDk2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjU4NzIwMkJBQkNFNDExRTBCOEIwQzU3QzQyMDBGNDk2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTg3MjAyQjdCQ0U0MTFFMEI4QjBDNTdDNDIwMEY0OTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTg3MjAyQjhCQ0U0MTFFMEI4QjBDNTdDNDIwMEY0OTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4v/lPcAAACe0lEQVR42nRTW0tUURQ++3IuHmecdCJzLDRqisaKoR4zlMDKKLEoiR4qIiLwB/QS/YN6CYSgiCBCaKDAIqJI6GKQGFEqhjUQqQk5w5hnZjq3vVtrPMY46YaPb6+111pn3Q6RUioVhwMMgApwAX8AnrLawQBloH03bzU0b935bN2GLbPIKKO+wu4faEU8MvD4aasvaVO4rn4KGWXUr5YADVIOAeoQfTeuTyeTyc+mGc4io7z0FtjxZV+ENEJN8R0px/YSCiWCq3qhKhSeU3Uz79qF6qK1sNZzbVMRkmo6H/8+OXoC/KzyhmlC4bGaaPQrIdQjlArGuU0p94luOoxpBSkE9EDwgjUfA3sdUAQIbCGWIBnXFjjXclzX51W9KguyBYGKyJphZnQz9Msww7M63DOZbG3Hoa7D4BcGMAxgd3a0fRgbfj7Qub91xvddGoxvOQhxmKpa7Qe7r4xNTF6LJ3bfxnGjsXf+7On7wKnei2ee+K6NZTkrgXMj50kWqo7UffF80oi7gsb83IVLPd1HjxiDr960QbPcwOG/Q6hCd21P5D5+Gq1PtGxLY2Y4hdrGTS0vmapZKtd+G6HINNf0/EoB7KIVnRgZTPU/eBg/dfLYMKjeYgZUrzKnjerIFKXMI4y7vutwIX1OCfMoVx1CiI8BoDycwBA4DwFnlqagEMbype6r2oLiufzq5d6f4+9fvEOWrqOhL/ZKSFHafsBcwKVNlItXqF4I2bA+ynqOdz0CuR8ZZdSX5r5oJytX2Y5vbs5DfWscu1iTTn+r39t+IHnn7j0NGWXU4zvaoX3lKjPgfYBYoMNfdwTwA7ARsKds/2cAr4OSSuevAAMAy+gvpYr6B6sAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.label%20%3D%20%22Extensions%22%3B%0Athis.tooltipText%20%3D%20this.label%3B%0A%0A/*%20*****%20BEGIN%20LICENSE%20BLOCK%20*****%0A%20*%20Version%3A%20MPL%201.1%0A%20*%0A%20*%20The%20contents%20of%20this%20file%20are%20subject%20to%20the%20Mozilla%20Public%20License%20Version%0A%20*%201.1%20%28the%20%22License%22%29%3B%20you%20may%20not%20use%20this%20file%20except%20in%20compliance%20with%0A%20*%20the%20License.%20You%20may%20obtain%20a%20copy%20of%20the%20License%20at%0A%20*%20http%3A//www.mozilla.org/MPL/%0A%20*%0A%20*%20Software%20distributed%20under%20the%20License%20is%20distributed%20on%20an%20%22AS%20IS%22%20basis%2C%0A%20*%20WITHOUT%20WARRANTY%20OF%20ANY%20KIND%2C%20either%20express%20or%20implied.%20See%20the%20License%0A%20*%20for%20the%20specific%20language%20governing%20rights%20and%20limitations%20under%20the%0A%20*%20License.%0A%20*%0A%20*%20Original%20code%20is%20Extensions%20Options%20Menu%20for%20Custom%20Buttons%0A%20*%0A%20*%20The%20Initial%20Developer%20of%20the%20Original%20Code%20is%20LouCypher.%0A%20*%20Portions%20created%20by%20the%20Initial%20Developer%20are%20Copyright%20%28C%29%202011%0A%20*%20the%20Initial%20Developer.%20All%20Rights%20Reserved.%0A%20*%0A%20*%20Contributor%28s%29%3A%0A%20*%20%20LouCypher%20%3Cloucypher@mozillaca.com%3E%0A%20*%0A%20*%20*****%20END%20LICENSE%20BLOCK%20*****%20*/%0A%0Afunction%20%24%28aId%29%20%7B%0A%20%20return%20document.getElementById%28aId%29%3B%0A%7D%0A%0Afunction%20%24xml%28aXML%29%20%7B%0A%20%20return%20cbu.makeXML%28aXML%29%3B%0A%7D%0A%0Afunction%20sort%28aArray%29%20%7B%0A%20%20aArray.sort%28function%28a%2C%20b%29%20%7B%0A%20%20%20%20a%20%3D%20a.name.toLowerCase%28%29%3B%0A%20%20%20%20b%20%3D%20b.name.toLowerCase%28%29%3B%0A%20%20%20%20if%20%28a%20%3C%20b%29%20return%20-1%3B%0A%20%20%20%20if%20%28a%20%3E%20b%29%20return%201%3B%0A%20%20%20%20return%200%3B%0A%20%20%7D%29%0A%7D%0A%0Athis.openDialog%20%3D%20function%28aURL%29%20%7B%0A%20%20openDialog%28aURL%2C%20%22%22%2C%20%22chrome%2C%20dialog%2C%20close%2C%20titlebar%2C%20toolbar%2C%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22scrollbars%2C%20minimizable%2C%20centerscreen%22%29%3B%0A%7D%0A%0Athis.setStatus%20%3D%20function%28aString%29%20%7B%0A%20%20document.getElementById%28%22statusbar-display%22%29.label%20%3D%20aString%3B%0A%7D%0A%0Athis.onclick%20%3D%20function%20inspectExtensions%28aEvent%29%20%7B%0A%20%20if%20%28%28typeof%20inspectObject%20%21%3D%20%22function%22%29%20%7C%7C%0A%20%20%20%20%20%20%28aEvent.button%20%21%3D%201%29%29%20return%3B%0A%20%20AddonManager.getAllAddons%28function%28aAddons%29%20%7B%0A%20%20%20%20var%20extensions%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20aAddons.length%3B%20i++%29%20%7B%0A%20%20%20%20%20%20if%20%28aAddons%5Bi%5D.type%20%3D%3D%20%22extension%22%29%20%7B%0A%20%20%20%20%20%20%20%20extensions.push%28aAddons%5Bi%5D%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20sort%28extensions%29%3B%0A%20%20%20%20inspectObject%28extensions%29%3B%0A%20%20%7D%29%0A%7D%0A%0Athis.addonsMgr%20%3D%20function%28aPopup%2C%20aCallback%29%20%7B%0A%20%20AddonManager.getAllAddons%28function%28aAddons%29%20%7B%0A%20%20%20%20var%20extensions%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20aAddons.length%3B%20i++%29%20%7B%0A%20%20%20%20%20%20aAddons%5Bi%5D.toString%20%3D%20function%28%29%20%7B%20return%20this.name%3B%20%7D%0A%20%20%20%20%20%20if%20%28%28aAddons%5Bi%5D.type%20%3D%3D%20%22extension%22%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%28aAddons%5Bi%5D.optionsURL%20%21%3D%20null%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20aAddons%5Bi%5D.isActive%29%20%7B%0A%20%20%20%20%20%20%20%20extensions.push%28aAddons%5Bi%5D%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20sort%28extensions%29%3B%0A%20%20%20%20aCallback%28aPopup%2C%20extensions%29%3B%0A%20%20%7D%29%0A%7D%0A%0Afunction%20getExtensionObject%28aId%2C%20aCallback%29%20%7B%0A%20%20AddonManager.getAllAddons%28function%28aAddons%29%20%7B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20aAddons.length%3B%20i++%29%20%7B%0A%20%20%20%20%20%20if%20%28aAddons%5Bi%5D.id%20%3D%3D%20aId%29%20%7B%0A%20%20%20%20%20%20%20%20aCallback%28aAddons%5Bi%5D%29%3B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%29%0A%7D%0A%0Afunction%20addItem%28aNode%2C%20aId%2C%20aLabel%2C%20aURL%2C%20aIcon%2C%20aHomePage%2C%20aDesc%29%20%7B%0A%20%20aNode.appendChild%28%24xml%28%3Cmenuitem%20xmlns%3D%7Bxulns%7D%20class%3D%22menuitem-iconic%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20GUID%3D%7BaId%7D%20label%3D%7BaLabel%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20image%3D%7BaIcon%7D%20homepage%3D%7BaHomePage%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20statustext%3D%7BaURL%7D%20tooltiptext%3D%7BaDesc%7D/%3E%29%29%3B%0A%7D%0A%0Avar%20popup%20%3D%20%24xml%28%3Cmenupopup%20xmlns%3D%7Bxulns%7D%20context%3D%22cb-extensions-menu%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20oncommand%3D%22event.stopPropagation%28%29%3B%20this.parentNode.openDialog%28event.target.statusText%29%3B%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseover%3D%22this.parentNode.setStatus%28event.target.statusText%29%3B%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseout%3D%22this.parentNode.setStatus%28%27%27%29%3B%22/%3E%29%3B%0A%0Athis.populate%20%3D%20function%28aPopup%2C%20aExtensions%29%20%7B%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20aExtensions.length%3B%20i++%29%20%7B%0A%20%20%20%20let%20ext%20%3D%20aExtensions%5Bi%5D%3B%0A%20%20%20%20addItem%28aPopup%2C%20ext.id%2C%20ext.name%20+%20%22%20%22%20+%20ext.version%2C%20ext.optionsURL%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%28ext.iconURL%20%3F%20ext.iconURL%20%3A%20%22chrome%3A//mozapps/skin/extensions/extensionGeneric-16.png%22%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%28ext.homepageURL%20%3F%20ext.homepageURL%20%3A%20ext.reviewURL.replace%28/%5C/reviews/%2C%20%22%22%29.toString%28%29%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ext.description%29%3B%0A%20%20%7D%0A%7D%0A%0Athis.addonsMgr%28popup%2C%20this.populate%29%3B%0A%0Athis.appendChild%28popup%29%3B%0Athis.type%20%3D%20%22menu-button%22%3B%0A%0A//---------------------------------%0A%0Athis.copyId%20%3D%20function%28aId%29%20%7B%0A%20%20Cc%5B%22@mozilla.org/widget/clipboardhelper%3B1%22%5D.%0A%20%20getService%28Ci.nsIClipboardHelper%29.copyString%28aId%29%3B%0A%7D%0A%0Athis.goHome%20%3D%20function%28aURL%29%20%7B%0A%20%20gBrowser.loadOneTab%28aURL%29%3B%0A%7D%0A%0Athis.inspect%20%3D%20function%28aId%29%20%7B%0A%20%20getExtensionObject%28aId%2C%20inspectObject%29%3B%0A%7D%0A%0Athis.explore%20%3D%20function%28aId%29%20%7B%0A%20%20var%20dirService%20%3D%20Cc%5B%22@mozilla.org/file/directory_service%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20getService%28Ci.nsIProperties%29%3B%0A%20%20var%20dir%20%3D%20dirService.get%28%22ProfD%22%2C%20Ci.nsIFile%29%3B%0A%20%20dir.append%28%22extensions%22%29%3B%0A%20%20dir.append%28aId%29%3B%0A%20%20if%20%28%21dir.exists%28%29%29%20%7B%0A%20%20%20%20alert%28%22Directory%20%22%20+%20dir.path%20+%20%22%20doesn%27t%20exist%21%22%29%3B%0A%20%20%20%20return%3B%0A%20%20%20%20//dir.append%28%22.xpi%22%29%3B%0A%20%20%20%20//Application.console.log%28dir.path%29%3B%0A%20%20%7D%0A%20%20var%20localFileInterface%20%3D%20Cc%5B%22@mozilla.org/file/local%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20createInstance%28Ci.nsILocalFile%29%3B%0A%20%20localFileInterface.initWithPath%28dir.path%29%3B%0A%20%20var%20iDirectory%20%3D%20localFileInterface%3B%0A%20%20try%20%7B%0A%20%20%20%20iDirectory.reveal%28%29%3B%0A%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20var%20uri%20%3D%20Cc%5B%22@mozilla.org/network/io-service%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20getService%28Ci.nsIIOService%29.newFileURI%28iDirectory%29%3B%0A%20%20%20%20var%20protocolSvc%20%3D%20Cc%5B%22@mozilla.org/uriloader/external-protocol-service%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20getService%28Ci.nsIExternalProtocolService%29%3B%0A%20%20%20%20protocolSvc.loadUrl%28uri%29%3B%0A%20%20%7D%0A%7D%0A%0Aif%20%28%24%28%22cb-extensions-menu%22%29%29%20%7B%0A%20%20%24%28%22cb-extensions-menu%22%29.parentNode.removeChild%28%24%28%22cb-extensions-menu%22%29%29%3B%0A%7D%0A%0Athis.checkForDOMI%20%3D%20function%28aEvent%29%20%7B%0A%20%20if%20%28typeof%20inspectObject%20%21%3D%20%22function%22%29%20%7B%0A%20%20%20%20aEvent.target.getElementsByTagName%28%22menuitem%22%29%5B2%5D.hidden%20%3D%20true%3B%0A%20%20%7D%0A%7D%0A%0Avar%20popupset%20%3D%20document.getElementById%28%22mainPopupSet%22%29%3B%0Avar%20context%20%3D%20popupset.appendChild%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24xml%28%3Cmenupopup%20xmlns%3D%7Bxulns%7D%20id%3D%22cb-extensions-menu%22%20onclick%3D%22event.stopPropagation%28%29%3B%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onpopupshowing%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.checkForDOMI%28event%29%3B%22%7D%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cmenuitem%20label%3D%22Visit%20Home%20Page%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseover%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.setStatus%28document.popupNode.getAttribute%28%27homepage%27%29%29%3B%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseout%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.setStatus%28%27%27%29%3B%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20oncommand%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.goHome%28document.popupNode.getAttribute%28%27homepage%27%29%29%3B%22%7D/%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cmenuitem%20label%3D%22Copy%20GUID%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseover%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.setStatus%28document.popupNode.getAttribute%28%27GUID%27%29%29%3B%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseout%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.setStatus%28%27%27%29%3B%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20oncommand%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.copyId%28document.popupNode.getAttribute%28%27GUID%27%29%29%3B%22%7D/%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cmenuitem%20label%3D%22Inspect%20Extension%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseover%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.setStatus%28document.popupNode.getAttribute%28%27GUID%27%29%29%3B%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseout%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.setStatus%28%27%27%29%3B%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20oncommand%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.inspect%28document.popupNode.getAttribute%28%27GUID%27%29%29%3B%22%7D/%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cmenuitem%20label%3D%22Browse%20Install%20Directory%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseover%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.setStatus%28document.popupNode.getAttribute%28%27GUID%27%29%29%3B%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseout%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.setStatus%28%27%27%29%3B%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20oncommand%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.explore%28document.popupNode.getAttribute%28%27GUID%27%29%29%3B%22%7D/%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/menupopup%3E%29%29%3B%0A%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20url%20%3D%20%22chrome%3A//mozapps/content/extensions/extensions.xul%22%3B%0A%0Aif%20%28gBrowser.mCurrentTab.linkedBrowser.currentURI.spec%20%3D%3D%20%22about%3Ablank%22%29%20%7B%0A%20%20loadURI%28url%29%3B%0A%20%20return%3B%0A%7D%0A%0Avar%20tabs%20%3D%20gBrowser.mTabs%3B%0Afor%20%28var%20i%20%3D%200%3B%20i%20%3C%20tabs.length%3B%20i++%29%20%7B%0A%20%20if%20%28tabs%5Bi%5D.linkedBrowser.currentURI.spec%20%3D%3D%20url%29%20%7B%0A%20%20%20%20gBrowser.selectedTab%20%3D%20tabs%5Bi%5D%3B%0A%20%20%20%20return%3B%0A%20%20%7D%0A%7D%0A%0AgBrowser.loadOneTab%28url%2C%20null%2C%20null%2C%20null%2C%20false%29%3B%0A%0A%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

код

Выделить код

Код:

var url = "chrome://mozapps/content/extensions/extensions.xul";

if (gBrowser.mCurrentTab.linkedBrowser.currentURI.spec == "about:blank") {
  loadURI(url);
  return;
}

var tabs = gBrowser.mTabs;
for (var i = 0; i < tabs.length; i++) {
  if (tabs[i].linkedBrowser.currentURI.spec == url) {
    gBrowser.selectedTab = tabs[i];
    return;
  }
}

gBrowser.loadOneTab(url, null, null, null, false);

инициализация

Выделить код

Код:

this.label = "Extensions";
this.tooltipText = this.label;

/* ***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * Original code is Extensions Options Menu for Custom Buttons
 *
 * The Initial Developer of the Original Code is LouCypher.
 * Portions created by the Initial Developer are Copyright (C) 2011
 * the Initial Developer. All Rights Reserved.
 *
 * Contributor(s):
 *  LouCypher <loucypher@mozillaca.com>
 *
 * ***** END LICENSE BLOCK ***** */

function $(aId) {
  return document.getElementById(aId);
}

function $xml(aXML) {
  return cbu.makeXML(aXML);
}

function sort(aArray) {
  aArray.sort(function(a, b) {
    a = a.name.toLowerCase();
    b = b.name.toLowerCase();
    if (a < b) return -1;
    if (a > b) return 1;
    return 0;
  })
}

this.openDialog = function(aURL) {
  openDialog(aURL, "", "chrome, dialog, close, titlebar, toolbar," +
                       "scrollbars, minimizable, centerscreen");
}

this.setStatus = function(aString) {
  document.getElementById("statusbar-display").label = aString;
}

this.onclick = function inspectExtensions(aEvent) {
  if ((typeof inspectObject != "function") ||
      (aEvent.button != 1)) return;
  AddonManager.getAllAddons(function(aAddons) {
    var extensions = [];
    for (var i = 0; i < aAddons.length; i++) {
      if (aAddons[i].type == "extension") {
        extensions.push(aAddons[i]);
      }
    }
    sort(extensions);
    inspectObject(extensions);
  })
}

this.addonsMgr = function(aPopup, aCallback) {
  AddonManager.getAllAddons(function(aAddons) {
    var extensions = [];
    for (var i = 0; i < aAddons.length; i++) {
      aAddons[i].toString = function() { return this.name; }
      if ((aAddons[i].type == "extension") &&
          (aAddons[i].optionsURL != null) &&
          aAddons[i].isActive) {
        extensions.push(aAddons[i]);
      }
    }
    sort(extensions);
    aCallback(aPopup, extensions);
  })
}

function getExtensionObject(aId, aCallback) {
  AddonManager.getAllAddons(function(aAddons) {
    for (var i = 0; i < aAddons.length; i++) {
      if (aAddons[i].id == aId) {
        aCallback(aAddons[i]);
        return;
      }
    }
  })
}

function addItem(aNode, aId, aLabel, aURL, aIcon, aHomePage, aDesc) {
  aNode.appendChild($xml(<menuitem xmlns={xulns} class="menuitem-iconic"
                           GUID={aId} label={aLabel}
                           image={aIcon} homepage={aHomePage}
                           statustext={aURL} tooltiptext={aDesc}/>));
}

var popup = $xml(<menupopup xmlns={xulns} context="cb-extensions-menu"
                  oncommand="event.stopPropagation(); this.parentNode.openDialog(event.target.statusText);"
                  onmouseover="this.parentNode.setStatus(event.target.statusText);"
                  onmouseout="this.parentNode.setStatus('');"/>);

this.populate = function(aPopup, aExtensions) {
  for (var i = 0; i < aExtensions.length; i++) {
    let ext = aExtensions[i];
    addItem(aPopup, ext.id, ext.name + " " + ext.version, ext.optionsURL,
                    (ext.iconURL ? ext.iconURL : "chrome://mozapps/skin/extensions/extensionGeneric-16.png"),
                    (ext.homepageURL ? ext.homepageURL : ext.reviewURL.replace(/\/reviews/, "").toString()),
                    ext.description);
  }
}

this.addonsMgr(popup, this.populate);

this.appendChild(popup);
this.type = "menu-button";

//---------------------------------

this.copyId = function(aId) {
  Cc["@mozilla.org/widget/clipboardhelper;1"].
  getService(Ci.nsIClipboardHelper).copyString(aId);
}

this.goHome = function(aURL) {
  gBrowser.loadOneTab(aURL);
}

this.inspect = function(aId) {
  getExtensionObject(aId, inspectObject);
}

this.explore = function(aId) {
  var dirService = Cc["@mozilla.org/file/directory_service;1"].
                   getService(Ci.nsIProperties);
  var dir = dirService.get("ProfD", Ci.nsIFile);
  dir.append("extensions");
  dir.append(aId);
  if (!dir.exists()) {
    alert("Directory " + dir.path + " doesn't exist!");
    return;
    //dir.append(".xpi");
    //Application.console.log(dir.path);
  }
  var localFileInterface = Cc["@mozilla.org/file/local;1"].
                           createInstance(Ci.nsILocalFile);
  localFileInterface.initWithPath(dir.path);
  var iDirectory = localFileInterface;
  try {
    iDirectory.reveal();
  } catch(ex) {
    var uri = Cc["@mozilla.org/network/io-service;1"].
              getService(Ci.nsIIOService).newFileURI(iDirectory);
    var protocolSvc = Cc["@mozilla.org/uriloader/external-protocol-service;1"].
                      getService(Ci.nsIExternalProtocolService);
    protocolSvc.loadUrl(uri);
  }
}

if ($("cb-extensions-menu")) {
  $("cb-extensions-menu").parentNode.removeChild($("cb-extensions-menu"));
}

this.checkForDOMI = function(aEvent) {
  if (typeof inspectObject != "function") {
    aEvent.target.getElementsByTagName("menuitem")[2].hidden = true;
  }
}

var popupset = document.getElementById("mainPopupSet");
var context = popupset.appendChild(
                $xml(<menupopup xmlns={xulns} id="cb-extensions-menu" onclick="event.stopPropagation();"
                                onpopupshowing={"document.getElementById('" + this.id + "').checkForDOMI(event);"}>
                      <menuitem label="Visit Home Page"
                                onmouseover={"document.getElementById('" + this.id + "').setStatus(document.popupNode.getAttribute('homepage'));"}
                                onmouseout={"document.getElementById('" + this.id + "').setStatus('');"}
                                oncommand={"document.getElementById('" + this.id + "').goHome(document.popupNode.getAttribute('homepage'));"}/>
                      <menuitem label="Copy GUID"
                                onmouseover={"document.getElementById('" + this.id + "').setStatus(document.popupNode.getAttribute('GUID'));"}
                                onmouseout={"document.getElementById('" + this.id + "').setStatus('');"}
                                oncommand={"document.getElementById('" + this.id + "').copyId(document.popupNode.getAttribute('GUID'));"}/>
                      <menuitem label="Inspect Extension"
                                onmouseover={"document.getElementById('" + this.id + "').setStatus(document.popupNode.getAttribute('GUID'));"}
                                onmouseout={"document.getElementById('" + this.id + "').setStatus('');"}
                                oncommand={"document.getElementById('" + this.id + "').inspect(document.popupNode.getAttribute('GUID'));"}/>
                      <menuitem label="Browse Install Directory"
                                onmouseover={"document.getElementById('" + this.id + "').setStatus(document.popupNode.getAttribute('GUID'));"}
                                onmouseout={"document.getElementById('" + this.id + "').setStatus('');"}
                                oncommand={"document.getElementById('" + this.id + "').explore(document.popupNode.getAttribute('GUID'));"}/>
                     </menupopup>));

adidharma пишет

где её брал, уже не помню

LouCypher <loucypher@mozillaca.com>

https://loucypher.googlecode.com/svn/custombuttons/xml/
=> https://loucypher.googlecode.com/svn/cu … 20Menu.xml
По виду должна работать. :)

Infocatcher пишет

По виду должна работать. :)

Спасибо за ссылку, но чёто всё-равно работать не хочет. :sick: Раньше совсем меню не работало и кнопка "бледная" была, а теперь выдаёт такую фигню:
[firefox] 21 thumb_4358399_1.png

[nightly] 23 thumb_4356884_0.png

C ABP конфликтует, штоли? :sick:

Да, отключил Adblock - всё нормально стало. С ABP такая ошибка:
2933161_0.png

На 20-й версии тоже такую же ошибку выдаёт, а та кнопка, что я выше привёл, нормально работает. :sick:
:whiteflag:

adidharma
Заменить

Выделить код

Код:

function addItem(aNode, aId, aLabel, aURL, aIcon, aHomePage, aDesc) {
  aNode.appendChild($xml('<menuitem xmlns="' + xulns + '" '
                       + 'class="menuitem-iconic" GUID="' + aId + '" '
                       + 'label="' + aLabel + '" image="' + aIcon + '" '
                       + 'homepage="' + htmlEntities(aHomePage) + '" '
                       + 'statustext="' + aURL + '" '
                       + 'tooltiptext="' + aDesc + '"/>'));
}

на

Выделить код

Код:

function addItem(aNode, aId, aLabel, aURL, aIcon, aHomePage, aDesc) {
  aNode.appendChild($xml('<menuitem xmlns="' + xulns + '" '
                       + 'class="menuitem-iconic" GUID="' + htmlEntities(aId) + '" '
                       + 'label="' + htmlEntities(aLabel) + '" image="' + htmlEntities(aIcon) + '" '
                       + 'homepage="' + htmlEntities(aHomePage) + '" '
                       + 'statustext="' + htmlEntities(aURL) + '" '
                       + 'tooltiptext="' + htmlEntities(aDesc) + '"/>'));
}

Infocatcher
:beer:

для фф 20 есть кнопка BBCode? та что имеется уже не работает :(

Kiril__777 пишет

для фф 20 есть кнопка BBCode? та что имеется уже не работает :(

№6924

voqabuhe работает, спасибо

А как бы сделать, чтобы можно было использовать такую конструкцию

Выделить код

Код:

(function(){var url=document.location.href;window.open('http://my_search.com/?q=' + encodeURIComponent(url))})()

только вместо адреса подставлять содержимое буфера обмена?

okkamas_knife пишет

Чайник
в сниппетах есть код получающий содержимое буфера обмена в переменную
далее
window.open('http://my_search.com/?q=' + enco
заменяем на window.open(blabla + enco
где blabla содержимое буфера обмена.

Мне надо вставлять содержимое буфера не в адресную строку, а в поле ввода поискового запроса на странице поисковика.
И хотелось бы код получающий содержимое буфера обмена в переменную чтоб был без привязки к custombuttons.
Т. е. чтоб его можно было применить везде, а не только в кнопке.

okkamas_knife пишет

пост про работу с текстом там найдёте нужный кусок кода

okkamas_knife, потихоньку пробую вникнуть.
Сейчас я столкнулся с трудностью - не знаю как сделать то что мне нужно. А нужно вот что.

Есть код

Выделить код

Код:

gBrowser.selectedTab = gBrowser.addTab("http://my_url");
function upimg() {
loadURI ("javascript:my_bookmarklet)");
}
setTimeout(upimg, 1000);
var input = content.document.getElementsByName("name")[0];
input.focus();


Получается, всё что идёт после setTimeout не работает. Почему?

Чайник пишет

Получается, всё что идёт после setTimeout не работает. Почему?

При отладке кода полезно смотреть в консоль ошибок:

Метка времени: 23.04.2013 18:06:03
Ошибка: TypeError: input is undefined
Источник: chrome://custombuttons-context/content/button.js?windowId=Firefox&id=custombuttons-button27@code
Строка: 7

Метка времени: 23.04.2013 18:06:04
Ошибка: SyntaxError: missing ; before statement
Источник: javascript:my_bookmarklet)
Строка 1, символ 14
Исходный код:
my_bookmarklet)

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

okkamas_knife пишет

если я правильно понял что именно вы хотите.т.е. вы открываете страницу,ждете секунду,запускаете букмарклет, и потом хотите сфокусироваться на нужном элементе, так?

Вы абсолютно правильно поняли! :)

okkamas_knife пишет

надо  либо запихнуть в функцию вызываемую по таймауту

Не получается, нужно чтобы между срабатыванием букмарклета и фокусировкой был небольшой интервал, иначе не работает.

okkamas_knife пишет

если не будет нормально работать то создать второй в котором указать не секунду а две

Тоже не выходит, срабатывает только первый таймер. В том числе и тот код, что вы предложили.
Я погуглил по "два таймера на одной странице" - встречаются советы типа этого http://forum.vingrad.ru/forum/s/14619da … 8783.html#
Но я не знаю как потом прописать эти переменные, просто timer1 и timer2 ?

Я сделал с листенером:

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

Выделить код

Код:

var newTabBrowser = gBrowser.getBrowserForTab(gBrowser.selectedTab = gBrowser.addTab("http://pixator.ru/"));
newTabBrowser.addEventListener("load", function () {loadURI ("javascript:my_bookmarklet");
}, true);
function focus() {
var input = content.document.getElementsByName("id")[0];
input.focus();
//Тут идут ещё пара команд и вроде всё работает
}
window.setTimeout(focus, 2000);


Только у меня не работало, пока я не подставил window перед setTimeout. В каких случаях надо добавлять window?

okkamas_knife пишет

...возможно у вас ваш букмарклет пакостит?

Точно! В этом, как оказалось, и было всё дело.

Спасибо огромное за помощь! :)

В списке готовых кнопок нашёл только одну кнопку "Tabs Counter", но она не подходит мне. Мне нужно, чтобы сразу показывало число вкладок и только. Желательно, чтобы в этом месте

всем привет :rock:

есть такая удобная кнопка Stf - №76. Сохраняет выделенный текст или весь текст на странице как txt файл.
Можно ли как-то подправить код этой кнопки, чтобы после сохранения текста в файл, этот самый txt-файл сразу же автоматически открывался во внешнем текстовом редакторе, который у меня по умолчанию открывает текстовые  файлы.
Мне это очень нужно, чтобы можно было сразу подправить текст.

еще я нашла кнопку Text To Editor - №165, которая умеет так делать, но в отличии от Stf в этой кнопке есть 2 больших неудобства
1) txt-файл создается в папке custombuttons в папке профиля
2) файл имеет постоянное имя TextToEditor.txt

В общем мне очень нужна ваша помощь, чтобы немного подправить кнопку Stf.

diliana

Eщё вариант

скрытый текст
Заменить

Выделить код

Код:

saveURL("data:text/plain," + encodeURIComponent( content.location.href + ("\r\n\r\n" + getSelect() )), fileTitle + ".txt", null, false, false, null, content.document);

на

Выделить код

Код:

var text = convertFromUnicode("UTF-8", content.location + "\r\n\r\n" + getSelect());
    const filePicker = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
    filePicker.appendFilters(filePicker.filterText);
    filePicker.defaultExtension = "txt";
    filePicker.defaultString = fileTitle + ".txt";
    filePicker.init(window, "Сохранить как", filePicker.modeSave);
    if (filePicker.show() != filePicker.returnCancel) {
        const foStream = Cc["@mozilla.org/network/file-output-stream;1"].createInstance(Ci.nsIFileOutputStream);
        foStream.init(filePicker.file, -1, 0777, 0);
        foStream.write(text, text.length);
        foStream.close();
        filePicker.file.launch();
    }

Dumby это то, что было нужно! просто супер! :rock: спасибо большое-пребольшое!!! :heart:

Тут предложение и запрос по кнопке Текстовые смайлы(Firefox3.6-5.0)
Кнопка работает до 20-й версии включительно, на 21-й отвалилась и восстановить её (с помощью Convert E4X) не выходит :(.
Предложение - поправить имя кнопки и заголовок сообщения - Текстовые смайлы(Firefox3.6-20.0.1), запрос - сделать, чтобы работала на версии 21 и выше. :angel:

adidharma
Поправить имя кнопки и заголовок сообщения может только автор сообщения который тут давно не появлялся. А кнопки я исправлю.

bunda1 пишет

А кнопки я исправлю.

Было бы прекрасно. :beer:
А то я её уже выпилил из своих сборок [firefox] 21 и выше, но до сих пор не могу привыкнуть к отсутствию этой кнопки. :(

okkamas_knife
Хорошо, так и сделаю. Но хотелось чтобы в Готовые кнопки для Custom Buttons был порядок.

okkamas_knife пишет

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

Я о том же думал - тогда новую кнопку сделать и выложить, отдельным постом.

11-05-2013 12:17:29

bunda1 пишет

Но хотелось чтобы в Готовые кнопки для Custom Buttons был порядок, без не работающих кнопок.

Это, наверно, к модераторам/администраторам надо обратиться?

adidharma пишет

Это, наверно, к модераторам/администраторам надо обратиться?

Сложно это, я не возьмусь.

bunda1 пишет

Сложно это, я не возьмусь.

Ну тогда просто отдельным постом выложить. :) :beer:
Как, например http://forum.mozilla-russia.org/viewtop … 82#p607682

Хорошо, примерно через час.

Чуть отвернулся - уже, наверно, не актуально, а выбросить жалко.

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

Выделить код

Код:

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%3E%u0422%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0435%20%u0441%u043C%u0430%u0439%u043B%u044B%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADExLzA1LzA33bqJ2wAAAi9JREFUeJyVk8tLVHEUxz+/e2dGzWlCp2wxQykyiwQlw0JbhFJBEIEugqB90L5NLnr9A+3b1KZcxeiuxYTUoskQLc1ZJGXYSBk+ynnPvfecFlPqnaDHd3P48X2cc35wjKriw8KRHkzotmL3KXZc1UO9ShatTCOVm4HeT3O75cYXkDmaxNjDVJfB2wT1fhI2YsK4JoqqM95wbHnEH5C91kju2SLuWpzqR/4EhyiuNGVzbjzRNpAuWwBspcb+xQwQZB2bfDxsvR+rTZDpOw7yiuLMX827UXD2oyon7FtXWx/grHQiRR5OJrh+vx+Ano4Nn6GeMwgitFtqNXXhbQLwaDKxU8MnfQH1XMCq4IrpslQ19uu3Lw8t1uqFA9A84Auo54xRRCRm3Le9apdnd5TNA7Xu+RdQSPsXr+M2cnswzlx3NlDNxMDjf6Bq2MyHViy8fEZMeJtIzcaZSHf8ZphId3A32bP9rroWtnEzASE4KiZ6NqTfawGvY8wvRUm9SdB9OAvA/FIrH75E6O6sQuQcbD2hWDaIeKNGVanMHEpaWhwOsk6hHODe0/OkphzfBGf6G7hyqZ1me4XC58dUHRlvGZQRo6psTJ9ubNJ3izb5eMj6BqaBr84Qq4XaKgejQdqiQSgtUFx7TqlUyq6ua6LropZ9x1Scakuq6nDIyhOwKpjAXrAjqBqcSp5CIQd44y2DUndMu1B8ua9bhDsi2ueJxlUEY9ysQaYt492InJL53fofa8ocVmP9V6MAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bconst%20data%20%3D%20%5B%0A%09%22%u042D%u043C%u043E%u0446%u0438%u044F%22%2C%0A%09%5B%0A%09%09%22%u0443%u043B%u044B%u0431%u043A%u0430%22%2C%20%22%3A-%29%22%2C%0A%09%09%22%u0433%u0440%u0443%u0441%u0442%u044C%22%2C%20%22%3A-%28%22%2C%0A%09%09%22%u0437%u0430%u0434%u0443%u043C%u0447%u0438%u0432%u043E%u0441%u0442%u044C%22%2C%20%22%3A-%7C%22%2C%0A%09%09%22%u0441%u043C%u0435%u0445%22%2C%20%22%3A-D%22%2C%0A%09%09%22%u0441%u043C%u0435%u0445%20%u0441%20%u0437%u0430%u0436%u043C%u0443%u0440%u0435%u043D%u043D%u044B%u043C%u0438%20%u0433%u043B%u0430%u0437%u0430%u043C%u0438%22%2C%20%22X-D%22%2C%0A%09%09%22%u0441%u0438%u043B%u044C%u043D%u043E%u0435%20%u043E%u0433%u043E%u0440%u0447%u0435%u043D%u0438%u0435%22%2C%20%22%3A-C%22%2C%0A%09%09%22%u043D%u0435%u0434%u043E%u0432%u043E%u043B%u044C%u0441%u0442%u0432%u043E/%u043E%u0437%u0430%u0434%u0430%u0447%u0435%u043D%u043D%u043E%u0441%u0442%u044C%22%2C%20%22%3A-/%22%2C%0A%09%09%22%u043D%u0435%u0434%u043E%u0432%u043E%u043B%u044C%u0441%u0442%u0432%u043E/%u043E%u0437%u0430%u0434%u0430%u0447%u0435%u043D%u043D%u043E%u0441%u0442%u044C%22%2C%20%22%3A-%5C%5C%22%2C%0A%09%09%22%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%2C%20%22%3A-0%22%2C%0A%09%09%22%u0441%u0438%u043B%u044C%u043D%u043E%u0435%20%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%2C%20%228-O%22%2C%0A%09%09%22%u0441%u0438%u043B%u044C%u043D%u043E%u0435%20%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%2C%20%22%3D-O%22%2C%0A%09%09%22%u0441%u0438%u043B%u044C%u043D%u043E%u0435%20%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%2C%20%22%3A-%5B%20%5D%22%2C%0A%09%09%22%u0441%u043C%u0443%u0449%u0435%u043D%u0438%u0435%22%2C%20%22%3A-%5B%22%2C%0A%09%09%22%u0441%u0431%u0438%u0442%20%u0441%20%u0442%u043E%u043B%u043A%u0443%22%2C%20%22%250%22%2C%0A%09%09%22%u0437%u043B%u043E%u0440%u0430%u0434%u043D%u044B%u0439%20%20%u0441%u043C%u0435%u0445%22%2C%20%22%3E%3A-D%22%2C%0A%09%09%22%u043A%u043E%u0432%u0430%u0440%u043D%u0430%u044F%20%20%u0443%u043B%u044B%u0431%u043A%u0430%22%2C%20%22%7D%3A-%3E%22%2C%0A%09%09%22%u043A%u043E%u0432%u0430%u0440%u043D%u0430%u044F%20%20%u0443%u043B%u044B%u0431%u043A%u0430%22%2C%20%22%5D%3A-%3E%22%2C%0A%09%09%22%u0441%u0438%u043B%u044C%u043D%u044B%u0439%20%u0441%u043C%u0435%u0445%28%u0434%u043E%20%u0441%u043B%u0451%u0437%29%22%2C%20%22%3A%27-%29%22%2C%0A%09%09%22%u0441%u0438%u043B%u044C%u043D%u044B%u0439%20%u0441%u043C%u0435%u0445%28%u0434%u043E%20%u0441%u043B%u0451%u0437%29%22%2C%20%22%3A%27-D%22%2C%0A%09%09%22%u0441%u0438%u043B%u044C%u043D%u0430%u044F%20%u0437%u043B%u043E%u0441%u0442%u044C%22%2C%20%22D-%3A%22%2C%0A%09%09%22%AB%u0435%u0434%u0435%u0442%20%u043A%u0440%u044B%u0448%u0430%BB%22%2C%20%22/%3A-%28%22%2C%0A%09%09%22%AB%u0435%u0434%u0435%u0442%20%u043A%u0440%u044B%u0448%u0430%BB%22%2C%20%22/%3A-%5D%22%0A%09%5D%2C%0A%09%22%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%22%2C%0A%09%5B%0A%09%09%22%u043F%u043E%u0434%u043C%u0438%u0433%u0438%u0432%u0430%u0442%u044C%22%2C%20%22%3B-%29%22%2C%0A%09%09%22%u0446%u0435%u043B%u043E%u0432%u0430%u0442%u044C%22%2C%20%22%3A-*%22%2C%0A%09%09%22%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%2C%20%22%3A_%28%22%2C%0A%09%09%22%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%2C%20%22%3A%7E%28%22%2C%0A%09%09%22%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%2C%20%22%3A%27%28%22%2C%0A%09%09%22%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%2C%20%22%3A*%28%22%2C%0A%09%09%22%u0441%u0442%u0440%u0430%u0441%u0442%u043D%u044B%u0439%20%u043F%u043E%u0446%u0435%u043B%u0443%u0439%22%2C%20%22%3A-%7B%7D%22%2C%0A%09%09%22%u043A%u0440%u0438%u0447%u0430%u0442%u044C%22%2C%20%22%3A-@%22%2C%0A%09%09%22%u0440%u043E%u0442%20%u043D%u0430%20%u0437%u0430%u043C%u043A%u0435%22%2C%20%22%3A-X%22%2C%0A%09%09%22%u043E%u0442%u0432%u0440%u0430%u0449%u0435%u043D%u0438%u0435%22%2C%20%22%3A-%21%22%2C%0A%09%09%22%u043F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u044F%u0437%u044B%u043A%22%2C%20%22%3A-P%22%2C%0A%09%09%22%u043F%u043E%u043A%u0430%u0437%u044B%u0432%u0430%u0442%u044C%20%u044F%u0437%u044B%u043A%22%2C%20%22%3A-p%22%2C%0A%09%09%22%u0433%u0440%u043E%u043C%u043A%u0438%u0439%20%u0441%u043C%u0435%u0445%22%2C%20%22%3Alol%3A%22%0A%09%5D%2C%0A%09%22%u041F%u0435%u0440%u0441%u043E%u043D%u0430%u0436%22%2C%0A%09%5B%0A%09%09%22%u0447%u0435%u043B%u043E%u0432%u0435%u043A%20%u0432%20%u043E%u0447%u043A%u0430%u0445%22%2C%20%228-%29%22%2C%0A%09%09%22%u0447%u0435%u043B%u043E%u0432%u0435%u043A%20%u0432%20%u043E%u0447%u043A%u0430%u0445%22%2C%20%22B-%29%22%2C%0A%09%09%22%u0430%u043D%u0433%u0435%u043B%22%2C%20%22O%3A-%29%22%2C%0A%09%09%22%u0441%u0443%u043C%u0430%u0441%u0448%u0435%u0434%u0448%u0438%u0439%22%2C%20%22%25%29%22%2C%0A%09%09%22%3A*%29%u043F%u044C%u044F%u043D%u044B%u0439%22%2C%20%22%22%2C%0A%09%09%22%u041C%u0435%u0434%u0432%u0435%u0434/%AB%u041F%u0440%u0435%u0432%u0435%u0434%21%22%2C%20%22/b/%22%2C%0A%09%09%22%u041C%u0435%u0434%u0432%u0435%u0434/%AB%u041F%u0440%u0435%u0432%u0435%u0434%21%BB%22%2C%20%22%5C%5Co/%22%2C%0A%09%09%22%u041C%u0435%u0434%u0432%u0435%u0434/%AB%u041F%u0440%u0435%u0432%u0435%u0434%21%BB%22%2C%20%22%u0413%u0433Y%22%2C%0A%09%09%22%u041A%u0442%u0443%u043B%u0445%u0443%22%2C%20%22%7B%3A%u20AC%22%2C%0A%09%09%22%u041A%u0442%u0443%u043B%u0445%u0443%22%2C%20%22%3AE%22%2C%0A%09%09%22%u041A%u0442%u0443%u043B%u0445%u0443%22%2C%20%22%28%3B%2C%3B%29%22%2C%0A%09%09%22%u043A%u043B%u043E%u0443%u043D%22%2C%20%22*%3AO%29%22%2C%0A%09%09%22%u043E%u0441%u043A%u0430%u043B%u0435%u043D%u043D%u044B%u0439%20%20%u0432%u0430%u043C%u043F%u0438%u0440%22%2C%20%22%3A-E%22%2C%0A%09%09%22%u0432%u0430%u043C%u043F%u0438%u0440%20%u0431%u0435%u0437%20%u043A%u043B%u044B%u043A%u0430%22%2C%20%22%3A-F%22%2C%0A%09%09%22%u043C%u0443%u0442%u0430%u043D%u0442/%u043F%u0440%u0438%u0448%u0435%u043B%u0435%u0446%22%2C%20%22%3A%3A-%29%22%2C%0A%09%09%22%u0440%u043E%u0431%u043E%u0442%22%2C%20%22%5B%3A%5D%22%2C%0A%09%09%22%u0432%u043E%u043B%u0448%u0435%u0431%u043D%u0438%u043A%22%2C%20%22-%3D%3C%3A-%29%22%2C%0A%09%09%22%u043A%u0438%u0442%u0430%u0435%u0446%22%2C%20%22%2C%u2019-/%22%2C%0A%09%09%22%u043A%u0438%u0442%u0430%u0435%u0446%22%2C%20%22%3C%7C-%29%22%2C%0A%09%09%22%u0446%u0438%u043A%u043B%u043E%u043F%22%2C%20%22%u043E-%29%22%2C%0A%09%09%22%u0446%u0438%u043A%u043B%u043E%u043F%22%2C%20%22O-%29%22%2C%0A%09%09%22%u0447%u0435%u0440%u0435%u043F%22%2C%20%22%3A-%5D%5B%22%2C%0A%09%09%22%u043A%u0443%u0440%u044F%u0449%u0438%u0439%20%u0442%u0440%u0443%u0431%u043A%u0443%22%2C%20%22%3A-%3F%22%2C%0A%09%09%22%u043E%u043B%u0435%u043D%u044C%22%2C%20%22%u042D%3A-%29%22%2C%0A%09%09%22%u0441%u0435%u0440%u0434%u0446%u0435%22%2C%20%22%3C3%22%2C%0A%09%09%22%u0440%u043E%u0437%u0430%22%2C%20%22@%7D-%3E--%22%2C%0A%09%09%22%u043A%u043E%u0437%u0430%20%28%u0436%u0435%u0441%u0442%29%22%2C%20%22%5C%5Cm/%22%2C%0A%09%09%22%u043A%u043E%u0437%u0430%20%28%u0436%u0435%u0441%u0442%29%22%2C%20%22%5C%5Cm/_%22%2C%0A%09%09%22%u0431%u0430%u044F%u043D%22%2C%20%22%5B%3A%7C%7C%7C%3A%5D%22%2C%0A%09%09%22%u0431%u0430%u044F%u043D%22%2C%20%22%5B%3A%5D/%5C%5C/%5C%5C/%5C%5C%5B%3A%5D%22%2C%0A%09%09%22%u0431%u0430%u044F%u043D%22%2C%20%22%5B%3A%5D%7C%7C%7C%5B%3A%5D%22%2C%0A%09%09%22%u0437%u0430%u0434%u043D%u0438%u0446%u0430%22%2C%20%22%28_%21_%29%22%2C%0A%09%09%22%u0437%u0430%u0434%u043D%u0438%u0446%u0430%22%2C%20%22%28%29%28%29%22%0A%09%5D%0A%5D%3B%0Afunction%20appendNode%28nodeName%2C%20parent%2C%20attrs%29%20%7B%0A%09var%20node%20%3D%20document.createElement%28nodeName%29%3B%0A%09for%20%28var%20attr%20in%20attrs%29%20node.setAttribute%28attr%2C%20attrs%5Battr%5D%29%3B%0A%09parent.appendChild%28node%29%3B%0A%09return%20node%3B%0A%7D%0Athis.insertText%20%3D%20function%28text%29%20%7B%0A%09const%20command%20%3D%20%22cmd_insertText%22%3B%0A%09var%20controller%20%3D%20document.commandDispatcher.getControllerForCommand%28command%29%3B%0A%09if%20%28%21controller%20%7C%7C%20%21controller.isCommandEnabled%28command%29%29%20return%3B%0A%09var%20params%20%3D%20Cc%5B%22@mozilla.org/embedcomp/command-params%3B1%22%5D.createInstance%28Ci.nsICommandParams%29%3B%0A%09params.setStringValue%28%22state_data%22%2C%20text%29%3B%0A%20%20%20%20%20%20%20%20controller.QueryInterface%28Ci.nsICommandController%29.doCommandWithParams%28command%2C%20params%29%3B%0A%7D%3B%0Avar%20popup%20%3D%20appendNode%28%22menupopup%22%2C%20this%2C%20%7B%0A%09position%3A%20%22after_start%22%2C%0A%09oncommand%3A%20%22event.stopPropagation%28%29%3B%20this.parentNode.insertText%28event.target.value%29%22%2C%0A%09oncontextmenu%3A%20%22event.preventDefault%28%29%22%0A%7D%29%3B%0Afor%20%28var%20i%20%3D%200%2C%20l%20%3D%20data.length%3B%20i%20%3C%20l%3B%20i%20+%3D%202%29%20%7B%0A%09var%20menu%20%3D%20appendNode%28%22menu%22%2C%20popup%2C%20%7B%20label%3A%20data%5Bi%5D%20%7D%29%3B%0A%09var%20menupopup%20%3D%20appendNode%28%22menupopup%22%2C%20menu%2C%20%7B%7D%20%29%3B%0A%09var%20items%20%3D%20data%5Bi%20+%201%5D%3B%0A%09for%20%28var%20j%20%3D%200%2C%20s%20%3D%20items.length%3B%20j%20%3C%20s%3B%20j%20+%3D%202%29%20%7B%0A%09%09appendNode%28%22menuitem%22%2C%20menupopup%2C%20%7B%0A%09%09%09label%3A%20items%5Bj%20+%201%5D%20+%20%22%20%22%20+%20items%5Bj%5D%2C%0A%09%09%09value%3A%20items%5Bj%20+%201%5D%0A%09%09%7D%29%3B%0A%09%7D%0A%7D%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bthis.lastChild.openPopup%28this%29%3B%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
Выделить код

Код:

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%3E%u0422%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0435%20%u0441%u043C%u0430%u0439%u043B%u044B%20%28%u0410%u0437%u0438%u044F%29%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADExLzA1LzA33bqJ2wAAAi9JREFUeJyVk8tLVHEUxz+/e2dGzWlCp2wxQykyiwQlw0JbhFJBEIEugqB90L5NLnr9A+3b1KZcxeiuxYTUoskQLc1ZJGXYSBk+ynnPvfecFlPqnaDHd3P48X2cc35wjKriw8KRHkzotmL3KXZc1UO9ShatTCOVm4HeT3O75cYXkDmaxNjDVJfB2wT1fhI2YsK4JoqqM95wbHnEH5C91kju2SLuWpzqR/4EhyiuNGVzbjzRNpAuWwBspcb+xQwQZB2bfDxsvR+rTZDpOw7yiuLMX827UXD2oyon7FtXWx/grHQiRR5OJrh+vx+Ano4Nn6GeMwgitFtqNXXhbQLwaDKxU8MnfQH1XMCq4IrpslQ19uu3Lw8t1uqFA9A84Auo54xRRCRm3Le9apdnd5TNA7Xu+RdQSPsXr+M2cnswzlx3NlDNxMDjf6Bq2MyHViy8fEZMeJtIzcaZSHf8ZphId3A32bP9rroWtnEzASE4KiZ6NqTfawGvY8wvRUm9SdB9OAvA/FIrH75E6O6sQuQcbD2hWDaIeKNGVanMHEpaWhwOsk6hHODe0/OkphzfBGf6G7hyqZ1me4XC58dUHRlvGZQRo6psTJ9ubNJ3izb5eMj6BqaBr84Qq4XaKgejQdqiQSgtUFx7TqlUyq6ua6LropZ9x1Scakuq6nDIyhOwKpjAXrAjqBqcSp5CIQd44y2DUndMu1B8ua9bhDsi2ueJxlUEY9ysQaYt492InJL53fofa8ocVmP9V6MAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bconst%20data%20%3D%20%5B%0A%09%22%u042D%u043C%u043E%u0446%u0438%u044F%22%2C%0A%09%5B%0A%09%09%22%u0443%u043B%u044B%u0431%u043A%u0430%22%2C%20%22%28n_n%29%22%2C%0A%09%09%22%u0440%u0430%u0434%u043E%u0441%u0442%u044C%22%2C%20%22%28%5E_%5E%29%22%2C%0A%09%09%22%u0433%u0440%u0443%u0441%u0442%u044C%22%2C%20%22%28%3C_%3E%29%22%2C%0A%09%09%22%u0433%u0440%u0443%u0441%u0442%u044C%22%2C%20%22%28v_v%29%22%2C%0A%09%09%22%u0443%u043B%u044B%u0431%u043A%u0430%20%u0447%u0435%u0440%u0435%u0437%20%u0441%u0438%u043B%u0443%22%2C%20%22%28%5E%20%5E%29%22%2C%0A%09%09%22%u0437%u043B%u043E%u0441%u0442%u044C/%u043A%u0430%u0442%u0435%u0433%u043E%u0440%u0438%u0447%u043D%u043E%u0441%u0442%u044C%22%2C%20%22%28%3E_%3C%29%22%2C%0A%09%09%22%u0441%u043A%u0435%u043F%u0442%u0438%u0447%u043D%u043E%u0441%u0442%u044C%22%2C%20%22%28%3E_%3E%29%22%2C%0A%09%09%22%u0441%u043A%u0435%u043F%u0442%u0438%u0447%u043D%u043E%u0441%u0442%u044C%22%2C%20%22%28%3C_%3C%29%22%2C%0A%09%09%22%u0441%u043A%u043E%u043D%u0444%u0443%u0436%u0435%u043D%u043D%u043E%u0441%u0442%u044C%22%2C%20%22%28-_-%A8%29%22%2C%0A%09%09%22%u0441%u043C%u0443%u0449%u0451%u043D%u043D%u043E%u0441%u0442%u044C%22%2C%20%22%5E_%5E%A8%22%2C%0A%09%09%22%u0441%u043C%u0443%u0449%u0435%u043D%u043D%u043E%u0441%u0442%u044C%20%u0441%20%u043F%u043E%u043A%u0440%u0430%u0441%u043D%u0435%u043D%u0438%u0435%u043C%22%2C%20%22*%5E_%5E*%22%2C%0A%09%09%22%u044F%u0440%u043E%u0441%u0442%u044C%22%2C%20%22%28-_-%23%29%22%2C%0A%09%09%22%u044F%u0440%u043E%u0441%u0442%u044C%22%2C%20%22%28-_-%A4%29%22%2C%0A%09%09%22%u044F%u0440%u043E%u0441%u0442%u044C%22%2C%20%22%28-_-+%29%22%2C%0A%09%09%22%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%2C%20%22%28o_o%29%22%2C%0A%09%09%22%u0441%u0438%u043B%u044C%u043D%u043E%u0435%20%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%2C%20%22%280_0%29%22%2C%0A%09%09%22%u043E%u0447%u0435%u043D%u044C%20%u0441%u0438%u043B%u044C%u043D%u043E%u0435%20%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%2C%20%22%28O_o%29%22%2C%0A%09%09%22%u043E%u0447%u0435%u043D%u044C%20%u0441%u0438%u043B%u044C%u043D%u043E%u0435%20%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%2C%20%22%28o_O%29%22%2C%0A%09%09%22%u043D%u0435%u043F%u0440%u0438%u044F%u0442%u043D%u043E%u0435%20%u0443%u0434%u0438%u0432%u043B%u0435%u043D%u0438%u0435%22%2C%20%22%28V_v%29%22%2C%0A%09%09%22%u043E%u0431%u0430%u043B%u0434%u0435%u043D%u0438%u0435%22%2C%20%22%28@_@%29%22%2C%0A%09%09%22%u0443%u0441%u0442%u0430%u043B%u043E%u0441%u0442%u044C%20%u0433%u043B%u0430%u0437%22%2C%20%22%28%25_%25%29%22%2C%0A%09%09%22%u0434%u0435%u043F%u0440%u0435%u0441%u0441%u0438%u044F%22%2C%20%22%28u_u%29%22%2C%0A%09%09%22%u0447%u0435%u0440%u0442%21%22%2C%20%22%28%3Ex%3C%21%29%22%2C%0A%09%09%22%u0440%u0435%u0432%u043D%u0438%u0432%u044B%u0439%22%2C%20%228%28%3E_%3C%298%22%2C%0A%09%09%22%u043A%u043E%u0441%u043E%u0439%20%u0432%u0437%u0433%u043B%u044F%u0434%2C%20%u043D%u0435%u0434%u043E%u0432%u0435%u0440%u0438%u0435%22%2C%20%22%28%3E%3E%29%22%2C%0A%09%09%22%u043D%u0435%u0440%u0432%u043D%u044B%u0439%20%u0442%u0438%u043A%22%2C%20%22%280_%3C%29%22%2C%0A%09%09%22%u0444%u0430%u043D%u0430%u0442%u0435%u043D%u0438%u0435%22%2C%20%22%28*_*%29%22%2C%0A%09%09%22%u0444%u043B%u0435%u0433%u043C%u0430%u0442%u0438%u0447%u043D%u043E%u0441%u0442%u044C/%AB%u043C%u0434%u0430-%u0430-%u0430%u2026%BB%22%2C%20%22-__-%22%2C%0A%09%09%22%u043D%u0435%20%u0441%u043F%u0430%u043B%20%u0432%u0441%u044E%20%u043D%u043E%u0447%u044C%22%2C%20%22%289_9%29%22%2C%0A%09%09%22%u0441%u043E%u043D%u043D%u044B%u0439%20%u0438%u043B%u0438%20%AB%u0434%u043E%u0441%u0442%u0430%u043B%u0438%u2026%BB%22%2C%20%22%3D__%3D%22%2C%0A%09%09%22Zzz.%u0441%u043F%u044F%u0449%u0438%u0439%22%2C%20%22%28-.-%29Zzz.%22%2C%0A%09%09%22Zzz.%u0441%u043F%u044F%u0449%u0438%u0439%22%2C%20%22%28-_-%29Zzz.%22%2C%0A%09%09%22%u0431%u043E%u043B%u0435%u0437%u043D%u0435%u043D%u043D%u043E%u0441%u0442%u044C%22%2C%20%22%28-_-%3B%29%22%2C%0A%09%09%22%u0442%u0440%u0443%u043F%22%2C%20%22%28%u0425_%u0445%29%22%2C%0A%09%09%22%u0442%u0440%u0443%u043F%22%2C%20%22%28+_+%29%22%2C%0A%09%09%22%u0442%u0440%u0443%u043F%22%2C%20%22%28%u0445_%u0445%29%22%0A%09%5D%2C%0A%09%22%u0414%u0435%u0439%u0441%u0442%u0432%u0438%u0435%22%2C%0A%09%5B%0A%09%09%22%u043F%u043E%u0434%u043C%u0438%u0433%u0438%u0432%u0430%u0442%u044C%22%2C%20%22%28%5E_%7E%29%22%2C%0A%09%09%22%u043F%u043E%u0434%u043C%u0438%u0433%u0438%u0432%u0430%u0442%u044C%22%2C%20%22%28%5E_-%29%22%2C%0A%09%09%22%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%2C%20%22%28%3B_%3B%29%22%2C%0A%09%09%22%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%2C%20%22%28T_T%29%22%2C%0A%09%09%22%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%2C%20%22%28TT.TT%29%22%2C%0A%09%09%22%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%2C%20%22%28ToT%29%22%2C%0A%09%09%22%u043F%u043B%u0430%u043A%u0430%u0442%u044C%22%2C%20%22Q__Q%22%2C%0A%09%09%22%u0440%u0443%u043A%u043E%u043F%u043E%u0436%u0430%u0442%u0438%u0435%22%2C%20%22%3DX%3D%22%2C%0A%09%09%22%u043B%u044E%u0431%u043E%u0432%u044C%22%2C%20%22%5E%7D%7B%5E%22%2C%0A%09%09%22%u043F%u043E%u0446%u0435%u043B%u0443%u0439%22%2C%20%22%28%5E3%5E%29%22%0A%09%5D%2C%0A%09%22%u041F%u0435%u0440%u0441%u043E%u043D%u0430%u0436%22%2C%0A%09%5B%0A%09%09%22%u043A%u043E%u0448%u043A%u0430%28%u043D%u044F%29%22%2C%20%22%28%3D%5E.%5E%3D%29%22%2C%0A%09%09%22%u043A%u043E%u0448%u043A%u0430%28%u043D%u044F%29%22%2C%20%22%3D%5E_%5E%3D%22%2C%0A%09%09%22%u0441%u043E%u0432%u0430%22%2C%20%22%28O%2Co%29%22%2C%0A%09%09%22%u0441%u0432%u0438%u043D%u044C%u044F%22%2C%20%22%5E..%5E%22%2C%0A%09%09%22%u044D%u043C%u043E-%u043A%u0438%u0434%22%2C%20%22///_%u0422%22%2C%0A%09%09%22%u044D%u043C%u043E-%u043A%u0438%u0434%22%2C%20%22T_%5C%5C%5C%5C%5C%5C%22%2C%0A%09%09%22%u044D%u043C%u043E-%u043A%u0438%u0434%22%2C%20%22///_%5E%22%2C%0A%09%09%22%u044D%u043C%u043E-%u043A%u0438%u0434%22%2C%20%22%5E_%5C%5C%5C%5C%5C%5C%22%2C%0A%09%09%22%u041C%u0435%u0434%u0432%u0435%u0434/%AB%u041F%u0440%u0435%u0432%u0435%u0434%21%BB%22%2C%20%22%28%A8%5C%5C%28%u043E_%u041E%29/%A8%29%22%2C%0A%09%09%22%u041A%u0442%u0443%u043B%u0445%u0443%22%2C%20%22%28jIj%29%22%2C%0A%09%09%22%u041A%u0442%u0443%u043B%u0445%u0443%22%2C%20%22%28%3B%2C%3B%29%22%2C%0A%09%09%22%u041A%u0442%u0443%u043B%u0445%u0443%22%2C%20%22%28o%2C.%2CO%29%22%2C%0A%09%09%22%u041A%u0442%u0443%u043B%u0445%u0443%22%2C%20%22Y%28O%2C%2C%2C%2CO%29Y%22%2C%0A%09%09%22%u0436%u0438%u0432%u043E%u0439%20%u0441%u0440%u0435%u0434%u0438%20%u0437%u043E%u043C%u0431%u0438%22%2C%20%22%28x%28x_%28x_x%28%u041E_%u043E%29x_x%29_x%29x%29%22%2C%0A%09%09%22%u043F%u0440%u043E%u0441%u043D%u0443%u043B%u0441%u044F%20%u0432%20%u043C%u0435%u0442%u0440%u043E%22%2C%20%22%28-%28-_%28-_-%28%u041E_%u043E%29-_-%29_-%29-%29%22%2C%0A%09%09%22%u043E%u0432%u0435%u043D%2C%20%u0431%u0430%u0440%u0430%u0448%u043A%u0430%22%2C%20%22@-_-@%22%0A%09%5D%0A%5D%3B%0Afunction%20appendNode%28nodeName%2C%20parent%2C%20attrs%29%20%7B%0A%09var%20node%20%3D%20document.createElement%28nodeName%29%3B%0A%09for%20%28var%20attr%20in%20attrs%29%20node.setAttribute%28attr%2C%20attrs%5Battr%5D%29%3B%0A%09parent.appendChild%28node%29%3B%0A%09return%20node%3B%0A%7D%0Athis.insertText%20%3D%20function%28text%29%20%7B%0A%09const%20command%20%3D%20%22cmd_insertText%22%3B%0A%09var%20controller%20%3D%20document.commandDispatcher.getControllerForCommand%28command%29%3B%0A%09if%20%28%21controller%20%7C%7C%20%21controller.isCommandEnabled%28command%29%29%20return%3B%0A%09var%20params%20%3D%20Cc%5B%22@mozilla.org/embedcomp/command-params%3B1%22%5D.createInstance%28Ci.nsICommandParams%29%3B%0A%09params.setStringValue%28%22state_data%22%2C%20text%29%3B%0A%20%20%20%20%20%20%20%20controller.QueryInterface%28Ci.nsICommandController%29.doCommandWithParams%28command%2C%20params%29%3B%0A%7D%3B%0Avar%20popup%20%3D%20appendNode%28%22menupopup%22%2C%20this%2C%20%7B%0A%09position%3A%20%22after_start%22%2C%0A%09oncommand%3A%20%22event.stopPropagation%28%29%3B%20this.parentNode.insertText%28event.target.value%29%22%2C%0A%09oncontextmenu%3A%20%22event.preventDefault%28%29%22%0A%7D%29%3B%0Afor%20%28var%20i%20%3D%200%2C%20l%20%3D%20data.length%3B%20i%20%3C%20l%3B%20i%20+%3D%202%29%20%7B%0A%09var%20menu%20%3D%20appendNode%28%22menu%22%2C%20popup%2C%20%7B%20label%3A%20data%5Bi%5D%20%7D%29%3B%0A%09var%20menupopup%20%3D%20appendNode%28%22menupopup%22%2C%20menu%2C%20%7B%7D%20%29%3B%0A%09var%20items%20%3D%20data%5Bi%20+%201%5D%3B%0A%09for%20%28var%20j%20%3D%200%2C%20s%20%3D%20items.length%3B%20j%20%3C%20s%3B%20j%20+%3D%202%29%20%7B%0A%09%09appendNode%28%22menuitem%22%2C%20menupopup%2C%20%7B%0A%09%09%09label%3A%20items%5Bj%20+%201%5D%20+%20%22%20%22%20+%20items%5Bj%5D%2C%0A%09%09%09value%3A%20items%5Bj%20+%201%5D%0A%09%09%7D%29%3B%0A%09%7D%0A%7D%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bthis.lastChild.openPopup%28this%29%3B%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

okkamas_knife
Дак ты же сам мне код давал. Поставил во вкладку «Код»
this.lastChild.showPopup(this, -1, -1, "popup", "bottomleft", "topleft");
и, вроде и на двойке заработало...

Упс, виноват, не все обратные слэши заэкранировал.
bunda1, поправь в своих тоже.

Dumby пишет

Упс, виноват, не все обратные слэши заэкранировал.
bunda1, поправь в своих тоже.

Не понял, где поправить.

11-05-2013 15:44:46
А понял, сейчас проверю.

11-05-2013 15:58:33
Исправил Текстовые смайлы 2 и Текстовые смайлы(Азия) 2

Всем доброго времени суток!

Нужна помощь с кнопками. После обновления Firefox до версии 21 перестали работать вот эти кнопки:

Они отвалились на самом деле ещё раньше, но тогда помогло включение параметра javascript.options.xml.chrome. Он и сейчас включён, но это больше не помогает.
Можно что-то сделать, чтобы они снова заработали?

MySh пишет

Вставка символа;

№186

MySh пишет

Add-on's (Дополнения) (Firefox 4);
FFolders (Папки Firefox);
Page Encoding (Firefox 13+)
Можно что-то сделать, чтобы они снова заработали?

№76

Add-on's (Дополнения) (Firefox 4);

Тут можно другую кнопку заюзать: №162 и №164

MySh пишет

Нужна помощь с кнопками. После обновления Firefox до версии 21 перестали работать вот эти кнопки:FFolders (Папки Firefox);[*]

Open Firefox folders and files( Firefox 11 + )

Pony_Smile_Pack

Вставка символа;

№186

Спасибо, уже лучше, чем совсем ничего, но всё же не совсем то. Та кнопка позволяла выбрать один символ из выпадающего меню, и он появлялся на ней же, после чего его можно было вставлять много раз, не открывая выпадающего меню; с этой же кнопкой так не получается. К тому же у той кнопки меню не закрывалось, пока не щёлкнешь где-нибудь вне его (возможно, потому, что у меня установлено расширение Stay-Open Menu), а у этой оно всё равно закрывается.

okkamas_knife

Из SpiderMonkey удалена поддержка E4X

Это я уже понял. А как её вернуть? Может быть, есть какое-нибудь расширение для этого?

adidharma

№76

А вот это я не очень понял. По ссылке открывается GitHub, а в нём какие-то файлы. И что мне с ними делать? Это надо самому расширение собирать, что ли?

Тут можно другую кнопку заюзать: №162 и №164

К сожалению, нормально не хочет работать. То есть, вроде работает, но в выпадающем меню какой-то ужас творится (какие-то сущности XML). Видимо, тоже уже не работает.

bunda1

Open Firefox folders and files( Firefox 11 + )

И эта, к сожалению, работать не хочет. :(

MySh пишет

А вот это я не очень понял. По ссылке открывается GitHub, а в нём какие-то файлы. И что мне с ними делать? Это надо самому расширение собирать, что ли?

Там нужно перейти по ссылке http://infocatcher.github.io/Custom_But … rtE4X.html и установить кнопку, тыцнул по "install" (если есть NoScript и/или Redirect Remover, то в первом надо разр. скрипты, а второе отключить). Потом вытащить установленную кнопку и кликая сначала на ней, а потом на требующей конвертации, сконвертировать (будет открыта вкладка с исправленным кодом инициализации). Page Encoding (Firefox 13+) и Вставка символа сконвертились без проблем.

MySh пишет

К сожалению, нормально не хочет работать. То есть, вроде работает, но в выпадающем меню какой-то ужас творится (какие-то сущности XML). Видимо, тоже уже не работает.

В этом посте же написано, как исправить: №164

adidharma

Там нужно перейти по ссылке http://infocatcher.github.io/Custom_But … rtE4X.html и установить кнопку, тыцнул по "install" (если есть NoScript и/или Redirect Remover, то в первом надо разр. скрипты, а второе отключить). Потом вытащить установленную кнопку и кликая сначала на ней, а потом на требующей конвертации, сконвертировать (будет открыта вкладка с исправленным кодом инициализации). Page Encoding (Firefox 13+) и Вставка символа сконвертились без проблем.

Спасибо, буду разбираться.

В этом посте же написано, как исправить: №164

Ещё раз спасибо, исправил, вроде работает.

MySh пишет

bunda1

Open Firefox folders and files( Firefox 11 + )

И эта, к сожалению, работать не хочет. :(

Я сейчас проверил и кнопка работает даже на Nightly :/

bunda1
Кстати о [nightly]. В кнопке Копировать информацию о вкладках( Firefox 3.6 + ) пункт Копировать адрес работает только на активной вкладке. Поправьте, плиз.

voqabuhe пишет

bunda1
Кстати о [nightly]. В кнопке Копировать информацию о вкладках( Firefox 3.6 + ) пункт Копировать адрес работает только на активной вкладке. Поправьте, плиз.

Обнови кнопку, эта ошибка исправлена.

bunda1 пишет

Обнови кнопку, эта ошибка исправлена.

А, спасибо, проморгал обновление.

bunda1

Я сейчас проверил и кнопка работает даже на Nightly :/

Я вспомнил, почему оно не хочет работать — это из-за того, что у меня Linux, да ещё с KDE. Для моей системы Anton сделал специальную версию, которая у меня и стояла. Как бы то ни было, кнопка помогла, всё заработало как нужно. Посмотрим, надолго ли.

MySh
Ну тогда хорошо.

bunda1
К сожалению, не совсем.

Хотелось бы, чтобы в этой кнопке в выпадающем меню отключённые расширения тоже показывались (только в более бледном виде). Можно ли такое сделать? Тогда будет полная замена старой версии.

Какой командой можно закрыть toolbar-context-menu?
Или ещё лучше, как запретить его открывание?

Чайник пишет

Или ещё лучше, как запретить его открывание?

Выделить код

Код:

addEventListener("popupshowing", function(e) e.preventDefault(), false, document.getElementById("toolbar-context-menu"));

Dumby
Что-то не работает оно у меня. Вот мой код:

Выделить код

Код:

// ------  Очистка searchbar по правому клику на иконке лупы

var sbar = document.getElementById("searchbar");
var butt  = document.getAnonymousElementByAttribute(sbar, "anonid", "search-go-button");


butt.setAttribute("onclick", "event.stopPropagation(); clear(event);");
clear = function (event) {

// ------  Добавлен EventListener 
addEventListener("popupshowing", function(e) e.preventDefault(), false, document.getElementById("toolbar-context-menu"));
// -------------------------------------  

if ( event.button == 2 )
   {
     sbar.value=""
    } else {
sbar.handleSearchCommand(event).doCommand();

   }
}

Кликаю по лупе и контекстное меню выскакивает как и без листенера.

Чайник
А если так

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

Выделить код

Код:

// ------  Очистка searchbar по правому клику на иконке лупы

var sbar = document.getElementById("searchbar");
var butt  = document.getAnonymousElementByAttribute(sbar, "anonid", "search-go-button");

var attr = '\
    if (event.button == 2) { event.preventDefault(); this.parentNode.parentNode.value = ""; }\
    else handleSearchCommand(event);';

butt.setAttribute("onclick", attr);

Dumby пишет:

Чайник
А если так

Просто блеск!!
Thanks! :D

Подскажите пожалуйста код, чтобы сворачивать браузер сочетанием Shift + F1.

vom

Выделить код

Код:

addEventListener("keypress", function(e) { if (e.keyCode == e.DOM_VK_F1 && e.shiftKey) minimize() }, false);

Dumby, okkamas_knife
Спасибо большое,

и ради интереса, возможно ли сделать такой же глобальный хот кей на свернуть/развернуть браузер? В фубаре, например, глобальные клавиши назначаются просто, может и в лисе можно?

vom пишет

и ради интереса, возможно ли сделать такой же глобальный хот кей на свернуть/развернуть браузер? В фубаре, например, глобальные клавиши назначаются просто, может и в лисе можно?

Свернуть можно если фокус на баузере но развернуть наверно нет.

bunda1
Понятно, для этого нужен плагин переназначения клавиш в самой лисе, видимо.

okkamas_knife
Да, я это понимаю, имелось ввиду нужен плагин, который переназначит сочетание в самой системе. Впрочем переназначать есть чем, но у лисы должен быть единый параметр окна hide/show, а не только minimize.

Насчёт кнопок в UX:

feas пишет

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

adidharma пишет

Если это насчёт CB, то большинство кнопок всё-равно работать не будет. :(

тут случайно обнаружил - если перетащить неработающие кнопки с панели навигации (не работают только те кнопки, у которых код в Инициализации, точнее код из Инициализации не работает, а из секции "Код" работает) на панель закладок, а потом назад, то они начинают работать. Однако после перезапуска UX опять перестают работать. :( Возможно ли это это как-то пофиксить, может кнопку какую сделать можно для этого? :sick: :blush:

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

Ferguss114 пишет

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

Разве там нет таково меню:
thumbecb.jpg

adidharma пишет

Возможно ли это это как-то пофиксить

У меня так сработало

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

Выделить код

Код:

var sel = '#nav-bar-customizationtarget > toolbarbutton[id^="custombuttons-button"]:not([initialized])';
Array.forEach(document.querySelectorAll(sel), btn => { try { btn.init() } catch(ex) {} });

Dumby
О чём речь, что делает этот код :(

bunda1 пишет

О чём речь, что делает этот код

Дело было так

скрытый текст
Забрал этот :usch: UX.
А там - похоже, что кнопки, вытащенные на #nav-bar,
не хотят инициализироваться сами.

Ну а код, будучи положен в Инициализацию кнопки,
которой больше повезло с расположением,
инициализирует их принудительно, надеюсь...

Dumby
Спасибо, теперь понятно

Dumby пишет

У меня так сработало

Спасибо, это работает. :beer:

02-06-2013 20:41:43

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

Dumby пишет

этот :usch: UX

Там, кстати, и установка кнопок на панель дополнений делается весьма костыльным методом - кнопки устанавливаются и их расположение настраивается в обычной Nightly, после чего папка custombuttons и файл localstore.rdf копируются в профиль UX.

Ferguss114 пишет

Сейчас вот сообразил, что этот пункт Searсh с выпадающими поисковиками создан расширением, но может можно как-то реализовать то, о чём я написал?

Я продублировал это пункт меню в контекстном меню панели поиска и обнаружил что он не работает :(

Выделить код

Код:

addEventListener("popupshowing", function(e) {

   var popup = e.originalTarget;

   var cloneSearchSelect = document.getElementById("context-searchselect").cloneNode(true);
   popup.appendChild( cloneSearchSelect );     
          
}, false, document.getElementById("searchbar") );

bunda1 пишет:

Я продублировал это пункт меню в контекстном меню панели поиска и обнаружил что он не работает

Жаль... :(

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

Выделить код

Код:

var  n = prompt('Введите число:', '');

а на выходе оно выдаёт число ровно в 10 раз большее чем введено (т.е. вместо 5 выдаёт 50)... пытаюсь его поделить на 10, раз уж его так колбасит, на выходе получаю в 10 раз меньший результат, т.е 0.5 Умножаю его ещё раз на 10 и получаю нужный, в итоге работает такой вот код:

Выделить код

Код:

var  n = prompt('Введите число:', '');
n = (n/10)*10;

Только у меня так или так и задумано? :/

okkamas_knife
О, спасибо огромное, не знал, привык как в бейсике, что он сам определяет тип данных =)

У меня установлено расширение Greasefire (поиск скриптов для открытой страницы на Userscripts.org), но в последнее время расширение работает из рук вон плохо. И вот я подумал, а нельзя-ли для этой цели использовать сделать кнопку?

Mishania пишет

У меня установлено расширение Greasefire (поиск скриптов для открытой страницы на Userscripts.org), но в последнее время расширение работает из рук вон плохо. И вот я подумал, а нельзя-ли для этой цели использовать сделать кнопку?

Добавить поиск по  Userscripts.org с помощью Add to Search Bar :: Дополнения Firefox

Pony_Smile_Pack
Я так и делаю. Но я нажать кнопку, или скопировать\вставить и нажать кнопку - две большие разницы.

okkamas_knife
Простите, вы не можете помочь, или не хотите?

Mishania
Вот честно, две минуты поиска в гугле:

Выделить код

Код:

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%3ESearch%20for%20Userscripts.org%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKwSURBVHjabJNJTBNRGID/mc5MQYVWVNCGTbEtNZGDBj1ogolEMR5UJA2LBmMoIokxERIj8ehJjx6MYIQoJgq4JIa6gEARkKJFTa2iFFtKWwp2oeDCzNQ+31DQCc5L/nmT/P/3749ACAFBECBxiEPFFds0Ws399DRVhtX2udc97ig0PmgOLBkIbOwjAR8uMRRdvXF7pqv/NfrqnEAOlxsdLas6j3Wk2AEpCRcbKvLydrdu1WUr0lXrITEhAZKUSkhQKvKwXiY2ppbDRzCcv29P/ZZsDaSqUkCJYVJGwKMnHTDlmWgTZ/CvjkW4sKTScP1WC+oZsKAxpwv5gyEUnAkj2xc70p88Y8Y2a8VBxT0gispOGa413UVDb23IMe6OwaEw+jTqQKMOF3pptqBSw7k74hLEPaDUOu0VmpFDV58ZCJIAkiDB5fUBz0eApmjQqbOgrqa69HhVbZO4jKUfmiBJBctysHJFPPiDYbA7J4DjeJDLaWAYGVAyErIy0uDs6RPH9OXVtULWYgfEmN3emJK8BlYrEsHl8cEvloX4ODnEyRlgKGZhV1iOhcz0VNixM7dOCCp2EBkeMF3u6DaNqDasg1U4CzlFxxSRKMyz8xjmsPAQwNmRsc2jxGPkR0esHp7n9RBFrYbyUi1DUzh1GujFG0UBQrNz8P7DR3j+9NklqTEK3VVkbNLkVNZc9AwNW5Hb60PT/gCamg6gEbsT3XvYjvIP6i9gu2ShhOWb+BvLD13O9o3azWrVdy4K3wKhv5HfWW1Q39BY19nechPbzQrVwX9bhU+iIqnyQMF+mPvJQr/FCsHwDJgG30ADhl8Y2wQ4jIUVkpdaZRnPcd6AfxomJ32AIhEwdvaC8XG7JLwwvmXPmVFn52Tu2lvQjN9Crn3M6bWY+6otr3oGpWCB/SPAAJaJRguGUxB0AAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%0Aurl%3DgetBrowser%28%29.currentURI.spec%3B%0Adomen%20%3D%20url.split%28/%5C/+/g%29%5B1%5D%3B%0AgetBrowser%20%28%29.%20selectedTab%20%3D%20getBrowser%20%28%29.%20addTab%20%28%22https%3A//userscripts.org/scripts/search%3Fq%3D%22%20+%20domen%20+%22%26submit%3DSearch%22%29%3B%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
Выделить код

Код:

url=getBrowser().currentURI.spec;
domen = url.split(/\/+/g)[1];
getBrowser (). selectedTab = getBrowser (). addTab ("https://userscripts.org/scripts/search?q=" + domen +"&submit=Search");

Есть ли кнопка, которая открывает окошко с сохранёнными паролями именно для того сайта, на котором она была нажата?

1fesFFFF пишет

Есть ли кнопка, которая открывает окошко с сохранёнными паролями именно для того сайта, на котором она была нажата?

Если нет и если правильно понял, то может новую, и во вкладку Код

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

Выделить код

Код:

var str = "";
var loc = content.location;
if (!loc.protocol.indexOf("http")) str = loc.host;
var win = Services.wm.getMostRecentWindow("Toolkit:PasswordManager");
if (win) win.setFilter(str), win.focus();
else openDialog(
    "chrome://passwordmgr/content/passwordManager.xul",
    "_blank",
    "resizable,dialog=no,centerscreen",
    { filterString: str }
);

Dumby
Спасибо, то что нужно! :D

Подскажите пожалуйста, как изменить сохранение изображений с двойного на одинарный клик ПКМ в этой кнопке Autocopy+3? И можно ли сделать выделение слова по одинарному ЛКМ, а абзаца по двойному?

Loom пишет

Подскажите пожалуйста, как изменить сохранение изображений с двойного на одинарный клик ПКМ в этой кнопке Autocopy+3?

Выделить код

Код:

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%3EAutocopy+3%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgEDAAQACAcEAAcIBAAHCAQABwgEAAcIBAAHCAQABwgEAAcIBAAHCAMBBAEAAAAAAAAAAAAAAAACAAMDAAAAABUAJx9cAKq3awG84GoBud1qAbreagG63moBut5qAbreagG63mgAuN1qAbrgYgCzxR4ANy8AAAAAAAABAAEAAgQABAAAVwCgprNW/f/Wqf7805///9Si///Uov//1KL//9Si///Uov//16f//9Wl/vy3Yv3/YwC0vwEBAAAAAAAAFQAoH1cAoalyAM/1hh/Y/Ywn3P2KI9v9iyTb/Ysl2/2LJdv9iybb/Yki2v2bQ+L927X9/Neq/v9qAbvdBQAJCAABAABeAKuzr1H7/8WP9Pu+f/H/vn/y/76A8v++gPL/voDy/75/8v+9fvL/wof0/4wq3P+eS+L93rT//2gAud0DAAcIBQAJCGsBvNzVp/3/4sH//d+7///hv///4b///+G////hv///4b///9+7/v/nyf//w4rx/4wr2v3guv//agK63gMABwgEAAcIagK53dWl///gwP793rv+/9++/v/gv/7/4L/+/+C//v/fvv7/3br+/+TG///BhvH/jy3b/eTD//9qA7reAwAHCAQABwhqArre2rD//+jP//3lyv//583//+fO///nzv//587//+fN///lyP7/7Nb//8WP8v+QL9v96c3//2oDut4DAAcIBAAHCGoCut7fuf//7tz//evW///t2f//7dr//+3a///t2v//7dn//+rV/v/y4///yJby/5Ax2/3s1f//agS63gMABwgEAAcIagK63uPB///z6P/98OH///Lk///z5f//8+X///Pl///y5P//8OD+//ju///LnfL/kTLb/fDc//9rBLreAwAHCAQABwhqArre5sn///jy//316v//9u3///fu///37///9+7///bt///06f7//fj//86j8v+RMtv98d///2oFud0DAAcIBAAHCGoCut7pz////Pr//fjx///69P//+vX///r1///69f//+vT///fw/v//////0ajx/5M12/305///awS83AQACQgEAAcIaQK53erR///+/v/9+vT///v3///8+P///Pj///z4///79///+fT+///////TrPL/iyjY+8N5/f9dAKuzAAIAAAUACQhqAbvd7dr+//////z+/f/9/////f////3////9/////f////39/P79/////dy+8/5vAND1VgKhqRUAJx8AAAAAAQIAAGIAtL/Jh/3/8uT+/O3X///u2f//7tn//+7Z///u2f//7tn//+3X///x4/38vW78/1UAoKYABQAAAQACBAAAAQAAAAAAHgA3LmEAs8VqArvgagK53WoCut5qArreagK63moCut5qArreagK53WsBvOBbAKq3FQAnHwAAAAACAAMDAAAAAAAAAAAAAAAAAwIEAQQACAgEAAcIBAAHCAQABwgEAAcIBAAHCAQABwgEAAcIBAAIBwMCAwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20Autocopy+3%20%u043E%u0442%2005.08.2013.%0A%0A//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20cbu.setPrefs%28%22Autocopy%22%2C%20%21cbu.getPrefs%28%22Autocopy%22%29%20%29%3B%20%0A%20%20%20%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20menuPopup.showPopup%28%20this%2C%20-1%2C%20-1%2C%20%22popup%22%2C%20%22bottomleft%22%2C%20%22topleft%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%0A%7D%3B%20%0A%0A%0A%0A//%20%u041F%u0440%u043E%u0432%u0435%u0440%u0438%u0442%u044C%20%u043D%u0430%u043B%u0438%u0447%u0438%u0435%20%u0441%u0442%u0440%u043E%u043A%20%u0432%20%27about%3Aconfig%27%20%u0438%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u0435%u0441%u043B%u0438%20%u043D%u0435%20%u0441%u0443%u0449%u0435%u0441%u0442%u0432%u0443%u0435%u0442%20................................%0Aif%20%28%20%21cbu.isPref%28%22Autocopy.saveWithDoubleClick%22%29%20%29%20%7B%0A%20%20%20%20%20%5B%22Autocopy%22%2C%20%22Autocopy.reset%22%2C%20%22Autocopy.selectingTextBlink%22%2C%20%22Autocopy.selectWithDoubleClick%22%2C%0A%20%20%20%20%20%20%22Autocopy.copyWithDoubleClick%22%2C%20%22Autocopy.saveWithDoubleClick%22%5D.forEach%28function%28pref%29%20%7B%20cbu.setPrefs%28%20pref%2C%20false%20%29%20%7D%29%3B%0A%7D%3B%0A%0A%0A%20%0A//%20%u0421%u043E%u0437%u0434%u0430%u0442%u044C%20%u043C%u0435%u043D%u044E%20................................%0Avar%20menuPopup%20%3D%20document.getElementById%28%22mainPopupSet%22%29.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0A%0A//%20%u043C%u0430%u0441%u0441%u0438%u0432%20%u0441%20%u0434%u0430%u043D%u043D%u044B%u043C%u0438%20%u0434%u043B%u044F%20%u0441%u043E%u0437%u0434%u0430%u043D%u0438%u0435%20%u043C%u0435%u043D%u044E%20....%0Avar%20array%20%3D%20%5B%0A%20%20%20%20%7B%20label%3A%20%27%u0412%u044B%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u0430%u0432%u0442%u043E%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u043F%u0440%u0438%20%u0432%u044B%u0445%u043E%u0434%u0435%20%u0438%u0437%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%27%2C%20value%3A%20%27Autocopy.reset%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0412%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u043C%u0438%u0433%u0430%u0435%u0442%20%u043F%u0440%u0438%20%u0430%u0432%u0442%u043E%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0438%27%2C%20value%3A%20%27Autocopy.selectingTextBlink%27%20%7D%2C%0A%20%20%20%20%7B%20separator%3A%20%27%27%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0414%u0432%u043E%u0439%u043D%u043E%u0439%20%u043F%u0440%u0430%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u043C%u044B%u0448%u0438%20%u043A%u043E%u043F%u0438%u0440%u0443%u0435%u0442%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%27%2C%20value%3A%20%27Autocopy.copyWithDoubleClick%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u0414%u0432%u043E%u0439%u043D%u043E%u0439%20%u043B%u0435%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u043C%u044B%u0448%u0438%20%u0432%u044B%u0434%u0435%u043B%u044F%u0435%u0442%20%u0432%u0441%u0435%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0445%20%u043F%u043E%u043B%u044F%u0445%27%2C%20value%3A%20%27Autocopy.selectWithDoubleClick%27%20%7D%2C%0A%20%20%20%20%7B%20label%3A%20%27%u041F%u0440%u0430%u0432%u044B%u0439%20%u043A%u043B%u0438%u043A%20%u043C%u044B%u0448%u0438%20%u0441%u043E%u0445%u0440%u0430%u043D%u044F%u0435%u0442%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%20%u0431%u0435%u0437%20%u0437%u0430%u043F%u0440%u043E%u0441%u0430%27%2C%20value%3A%20%27Autocopy.saveWithDoubleClick%27%20%7D%2C%20%0A%20%20%20%20%7B%20label%3A%20%27%u0421%u0440%u0435%u0434%u043D%u0438%u043C%20%u043A%u043B%u0438%u043A%u043E%u043C%20%u0432%u0441%u0442%u0430%u0432%u043B%u044F%u0442%u044A%20%u0442%u0435%u043A%u0441%u0442%20%u0441%20%u0437%u0430%u043C%u0435%u043D%u043E%u0439%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%27%2C%20value%3A%20%27middlemouse.paste%27%20%7D%0A%5D%3B%0A%0A//%20%u0446%u0438%u043A%u043B%20%u043F%u043E%20%u043E%u0447%u0435%u0440%u0435%u0434%u0438%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0438%u0437%20%u043C%u0430%u0441%u0441%u0438%u0432%u0430%20%u043D%u0443%u0436%u043D%u044B%u0435%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%u044B%20%u043A%20%u043F%u0443%u043D%u043A%u0442%u0430%u043C%20%u043C%u0435%u043D%u044E%20....%20%20%0Aarray.forEach%28function%28%20m%20%29%20%7B%0A%20%20%20%20if%20%28%20%22separator%22%20in%20m%20%29%20%7B%20menuPopup.appendChild%28%20document.createElement%28%22menuseparator%22%29%20%29%3B%20return%20%7D%3B%0A%20%20%20%20var%20mItem%20%3D%20document.createElement%28%22menuitem%22%29%3B%0A%20%20%20%20mItem.setAttribute%28%22label%22%2C%20m.label%29%3B%0A%20%20%20%20mItem.setAttribute%28%27type%27%2C%20%27checkbox%27%29%3B%0A%20%20%20%20mItem.setAttribute%28%27checked%27%2C%20custombuttons.getPrefs%28%20m.value%20%29%20%29%3B%0A%20%20%20%20mItem.setAttribute%28%27onclick%27%2C%20%27custombuttons.setPrefs%28%22%27%20+%20m.value%20+%20%27%22%2C%20%21custombuttons.getPrefs%28%22%27%20+%20m.value%20+%20%27%22%29%29%27%29%3B%20%20%0A%20%20%20%20menuPopup.appendChild%28%20mItem%20%29%3B%0A%7D%29%3B%0AaddDestructor%28function%28%29%20%7B%20menuPopup.parentNode.removeChild%28%20menuPopup%20%29%20%7D%29%3B%20//%20%u0431%u043B%u043E%u043A%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0434%u0443%u0431%u043B%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%u043C%u0435%u043D%u044E%20%0A%0A//%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u043C%20%u0441%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u043E%u0435%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20....%0AmenuPopup.appendChild%28%20document.createElement%28%22menuseparator%22%29%20%29%3B%0Avar%20cbContextPopup%20%3D%20document.getElementById%28%22custombuttons-contextpopup%22%29%3B%0Avar%20clone%20%3D%20cbContextPopup.cloneNode%28true%29%3B%0Aclone.setAttribute%28%22onpopupshowing%22%2C%20%22document.popupNode%20%3D%20document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29%22%29%3B%0Avar%20menu%20%3D%20document.createElement%28%22menu%22%29%3B%0Amenu.setAttribute%28%22label%22%2C%20%22%u041C%u0435%u043D%u044E%20%u043A%u043D%u043E%u043F%u043A%u0438%22%29%3B%0Amenu.appendChild%28%20clone%20%29%3B%0AmenuPopup.appendChild%28%20menu%20%29%3B%0A%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u0438%u0442%u044C%20%u043D%u0443%u0436%u043D%u0443%u044E%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20%u043F%u0440%u0438%20%u0441%u0442%u0430%u0440%u0442%u0435%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0438%u043B%u0438%20%u043F%u0440%u0438%20%u0438%u0437%u043C%u0435%u043D%u0435%u043D%u0438%u044F%u0445%20%u043D%u0430%u0441%u0442%u0440%u043E%u0435%u043A%20%u0432%20%27about%3Aconfig%27%20................................%0Avar%20button%20%3D%20this%2C%20s%20%3D%20%22Autocopy%22%3B%0Afunction%20toggleImage%28%29%20%7B%20%20%0A%20%20%20%20button.image%20%3D%20cbu.getPrefs%28s%29%0A%20%20%20%20%3F%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgMBAAQIAAcEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAcACAMEAQEAAAAAAAAAAAAAAAACAwADAAAAABUnAB9cqgC3a7wB4Gq5Ad1qugHearoB3mq6Ad5qugHearoB3mi4AN1qugHgYrMAxR43AC8AAAAAAAEAAAECAAQAAAQAV6AAprP9Vv/W/qn80/+f/9T/ov/U/6L/1P+i/9T/ov/U/6L/1/+n/9X+pfy3/WL/Y7QAvwEAAQAAAAAAFSgAH1ehAKlyzwD1htgf/YzcJ/2K2yP9i9sk/YvbJf2L2yX9i9sm/YnaIv2b4kP92/21/Nf+qv9quwHdBQkACAAAAQBeqwCzr/tR/8X0j/u+8X//vvJ//77ygP++8oD/vvKA/77yf/+98n7/wvSH/4zcKv+e4kv93v+0/2i5AN0DBwAIBQkACGu8AdzV/af/4v/B/d//u//h/7//4f+//+H/v//h/7//4f+//9/+u//n/8n/w/GK/4zaK/3g/7r/aroC3gMHAAgEBwAIarkC3dX/pf/g/sD93v67/9/+vv/g/r//4P6//+D+v//f/r7/3f66/+T/xv/B8Yb/j9st/eT/w/9qugPeAwcACAQHAAhqugLe2v+w/+j/z/3l/8r/5//N/+f/zv/n/87/5//O/+f/zf/l/sj/7P/W/8Xyj/+Q2y/96f/N/2q6A94DBwAIBAcACGq6At7f/7n/7v/c/ev/1v/t/9n/7f/a/+3/2v/t/9r/7f/Z/+r+1f/y/+P/yPKW/5DbMf3s/9X/aroE3gMHAAgEBwAIaroC3uP/wf/z/+j98P/h//L/5P/z/+X/8//l//P/5f/y/+T/8P7g//j/7v/L8p3/kdsy/fD/3P9rugTeAwcACAQHAAhqugLe5v/J//j/8v31/+r/9v/t//f/7v/3/+//9//u//b/7f/0/un//f/4/87yo/+R2zL98f/f/2q5Bd0DBwAIBAcACGq6At7p/8///P/6/fj/8f/6//T/+v/1//r/9f/6//X/+v/0//f+8P//////0fGo/5PbNf30/+f/a7wE3AQJAAgEBwAIabkC3er/0f/+//79+v/0//v/9//8//j//P/4//z/+P/7//f/+f70///////T8qz/i9go+8P9ef9dqwCzAAACAAUJAAhquwHd7f7a//////z+//39/////f////3////9/////f////39/vz9/////dzzvv5v0AD1VqECqRUnAB8AAAAAAQACAGK0AL/J/Yf/8v7k/O3/1//u/9n/7v/Z/+7/2f/u/9n/7v/Z/+3/1//x/eP8vfxu/1WgAKYAAAUAAQIABAABAAAAAAAAHjcALmGzAMVquwLgarkC3Wq6At5qugLearoC3mq6At5qugLearkC3Wu8AeBbqgC3FScAHwAAAAACAwADAAAAAAAAAAAAAAAAAwQCAQQIAAgEBwAIBAcACAQHAAgEBwAIBAcACAQHAAgEBwAIBAgABwMDAgAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%0A%20%20%20%20%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgEDAAQACAcEAAcIBAAHCAQABwgEAAcIBAAHCAQABwgEAAcIBAAHCAMBBAEAAAAAAAAAAAAAAAACAAMDAAAAABUAJx9cAKq3awG84GoBud1qAbreagG63moBut5qAbreagG63mgAuN1qAbrgYgCzxR4ANy8AAAAAAAABAAEAAgQABAAAVwCgprNW/f/Wqf7805///9Si///Uov//1KL//9Si///Uov//16f//9Wl/vy3Yv3/YwC0vwEBAAAAAAAAFQAoH1cAoalyAM/1hh/Y/Ywn3P2KI9v9iyTb/Ysl2/2LJdv9iybb/Yki2v2bQ+L927X9/Neq/v9qAbvdBQAJCAABAABeAKuzr1H7/8WP9Pu+f/H/vn/y/76A8v++gPL/voDy/75/8v+9fvL/wof0/4wq3P+eS+L93rT//2gAud0DAAcIBQAJCGsBvNzVp/3/4sH//d+7///hv///4b///+G////hv///4b///9+7/v/nyf//w4rx/4wr2v3guv//agK63gMABwgEAAcIagK53dWl///gwP793rv+/9++/v/gv/7/4L/+/+C//v/fvv7/3br+/+TG///BhvH/jy3b/eTD//9qA7reAwAHCAQABwhqArre2rD//+jP//3lyv//583//+fO///nzv//587//+fN///lyP7/7Nb//8WP8v+QL9v96c3//2oDut4DAAcIBAAHCGoCut7fuf//7tz//evW///t2f//7dr//+3a///t2v//7dn//+rV/v/y4///yJby/5Ax2/3s1f//agS63gMABwgEAAcIagK63uPB///z6P/98OH///Lk///z5f//8+X///Pl///y5P//8OD+//ju///LnfL/kTLb/fDc//9rBLreAwAHCAQABwhqArre5sn///jy//316v//9u3///fu///37///9+7///bt///06f7//fj//86j8v+RMtv98d///2oFud0DAAcIBAAHCGoCut7pz////Pr//fjx///69P//+vX///r1///69f//+vT///fw/v//////0ajx/5M12/305///awS83AQACQgEAAcIaQK53erR///+/v/9+vT///v3///8+P///Pj///z4///79///+fT+///////TrPL/iyjY+8N5/f9dAKuzAAIAAAUACQhqAbvd7dr+//////z+/f/9/////f////3////9/////f////39/P79/////dy+8/5vAND1VgKhqRUAJx8AAAAAAQIAAGIAtL/Jh/3/8uT+/O3X///u2f//7tn//+7Z///u2f//7tn//+3X///x4/38vW78/1UAoKYABQAAAQACBAAAAQAAAAAAHgA3LmEAs8VqArvgagK53WoCut5qArreagK63moCut5qArreagK53WsBvOBbAKq3FQAnHwAAAAACAAMDAAAAAAAAAAAAAAAAAwIEAQQACAgEAAcIBAAHCAQABwgEAAcIBAAHCAQABwgEAAcIBAAIBwMCAwAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%22%3B%0A%7D%3B%20%20%0AtoggleImage%28%29%3B%0AgPrefService.addObserver%28%20s%2C%20toggleImage%2C%20false%20%29%3B%0AaddDestructor%28function%28%29%20%7B%20gPrefService.removeObserver%28%20s%2C%20toggleImage%2C%20false%20%29%20%7D%29%3B%20%20%0A%0A%0A%0A//%20%u0412%u044B%u043A%u043B%u044E%u0447%u0430%u0442%u044C%20%u043A%u043D%u043E%u043F%u043A%u0443%20%u043F%u0440%u0438%20%u0437%u0430%u043A%u0440%u044B%u0442%u0438%u0438%20%u0431%u0440%u0430%u0443%u0437%u0435%u0440%u0430%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20................................%0Avar%20turnOffButton%20%3D%20%7B%0A%20%20%20%20observe%3A%20function%28subject%2C%20topic%2C%20data%29%20%7B%0A%20%20%20%20%20%20%20if%20%28%20cbu.getPrefs%28%22Autocopy.reset%22%29%20%26%26%20data%20%3D%3D%20%22shutdown%22%20%29%20cbu.setPrefs%28%22Autocopy%22%2C%20false%20%29%3B%20%20%0A%20%20%20%20%7D%0A%7D%3B%0AServices.obs.addObserver%28%20turnOffButton%2C%20%22quit-application%22%2C%20false%29%3B%0A%0A%0A%0A//%20%u0424%u0443%u043D%u043A%u0446%u0438%u0438%20%u0430%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u0438%20%u043A%u043E%u043F%u0438%u0440%u0443%u0435%u0442%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%2C%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20................................%0Afunction%20autocopy%28e%29%20%7B%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%29%20return%3B%0A%0A%20%20%20if%20%28%20/input%7Cpassword%7Ctextarea%7Ctextbox%7Csearchbar%7Cfindbar/.test%28%20e.target.localName.toLowerCase%28%29%20%29%20%29%20return%3B%0A%20%20%20%0A%20%20%20if%20%28%20e.type%20%3D%3D%20%27mousedown%27%20%29%20var%20lastSelection%20%3D%20getBrowserSelection%28%29%3B%0A%20%20%20%0A%20%20%20if%20%28%20e.type%20%21%3D%3D%20%27mouseup%27%20%29%20return%3B%20%0A%20%20%20%0A%20%20%20var%20selection%20%3D%20getBrowserSelection%28%29%3B%0A%20%20%20if%20%28%20cbu.getPrefs%28%22Autocopy%22%29%20%26%26%20selection%20%26%26%20selection%20%21%3D%3D%20lastSelection%20%29%20%7B%0A%20%20%20%20%20%20%20%20goDoCommand%28%27cmd_copy%27%29%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u043C%u0438%u0433%u0430%u0435%u0442%20....%0A%20%20%20%20%20%20%20%20if%20%28%20%21cbu.getPrefs%28%22Autocopy.selectingTextBlink%22%29%20%29%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20document.activeElement.blur%28%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20window.content.focus%28%29%20%7D%2C%20300%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0AaddEventListener%28%22mouseup%22%2C%20autocopy%2C%20false%2C%20gBrowser%20%29%3B%0AaddEventListener%28%22mousedown%22%2C%20autocopy%2C%20false%2C%20gBrowser%20%29%3B%0A%0A%0A%0A//%20C%u0440%u0435%u0434%u043D%u0435%u0439%20%u043A%u043D%u043E%u043F%u043A%u043E%u0439%20%u043C%u044B%u0448%u0438%20%u0432%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0435%20%u043F%u043E%u043B%u044F%20%u0441%20%u0437%u0430%u043C%u0435%u043D%u043E%u0439%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20................................%0Afunction%20middleMousePaste%28e%29%20%7B%20%0A%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%26%26%20cbu.getPrefs%28%27middlemouse.paste%27%29%20%29%20%7B%0A%0A%20%20%20%20%20%20%20%20%20if%20%28%20/input%7Cpassword%7Ctextarea%7Ctextbox%7Csearchbar%7Cfindbar%7Ccbeditor/.test%28%20e.target.localName.toLowerCase%28%29%20%29%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26%26%20document.commandDispatcher.getControllerForCommand%28%22cmd_paste%22%29%20%29%20%7B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20e.stopPropagation%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%20%u0432%u0441%u0442%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20....%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20cmd%20%3D%20%22cmd_insertText%22%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20commandDispatcher%20%3D%20%28%20this.document%20%7C%7C%20document%20%29.commandDispatcher%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20controller%20%3D%20commandDispatcher.getControllerForCommand%28cmd%29%3B%0A%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%20controller%20%26%26%20controller.isCommandEnabled%28cmd%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20controller%20%3D%20controller.QueryInterface%28Components.interfaces.nsICommandController%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20params%20%3D%20Components.classes%5B%22@mozilla.org/embedcomp/command-params%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsICommandParams%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20params.setStringValue%28%22state_data%22%2C%20gClipboard.read%28%29%20%29%3B%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20controller.doCommandWithParams%28cmd%2C%20params%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0AaddEventListener%28%22click%22%2C%20middleMousePaste%2C%20true%2C%20document.documentElement%20%29%3B%0A%0A%0A%0A//%20%u0414%u043E%u043F%u043E%u043B%u043D%u0438%u0442%u0435%u043B%u044C%u043D%u044B%u0435%20%u0432%u043E%u0437%u043C%u043E%u0436%u043D%u043E%u0441%u0442%u0438%20%u0434%u043B%u044F%20%u0437%u043D%u0430%u0447%u043A%u0430%20%u0438%u0434%u0435%u043D%u0442%u0438%u0444%u0438%u043A%u0430%u0446%u0438%u0438%20%u0441%u0430%u0439%u0442%u0430%20%u0432%20%u0441%u0442%u0440%u043E%u043A%u0435%20%u0430%u0434%u0440%u0435%u0441%u0430%20................................%0AaddEventListener%28%22click%22%2C%20function%28e%29%20%7B%20%0A%20%20%20e.preventDefault%28%29%3B%0A%20%20%20e.stopPropagation%28%29%3B%0A%20%20%20%0A%20%20%20//%20%u041B%u041A%u041C%20%u0431%u0435%u0437%20%u0437%u0430%u043F%u0440%u043E%u0441%u0430%20%u043E%u0442%u043A%u0440%u044B%u0432%u0430%u0435%u0442%20%u0438%u043D%u0444%u043E%u0440%u043C%u0430%u0446%u0438%u044E%20%u043E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%u0432%20%u0432%u043A%u043B%u0430%u0434%u043A%u0435%20%27%u0420%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u0438%u044F%27%20....%0A%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20var%20doc%20%3D%20content.document%3B%0A%20%20%20%20%20%20%20%20BrowserPageInfo%28%20doc%2C%20%28%20%28doc.location.protocol%29.slice%280%2C4%29%20%3D%3D%20%22http%22%29%20%3F%20%22permTab%22%20%3A%20%22generalTab%22%20%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%0A%20%20%20//%20%u041F%u041A%u041C%20%u043A%u043E%u043F%u0438%u0440%u0443%u0435%u0442%20%u0442%u0435%u043A%u0443%u0449%u0438%u0439%20%u0430%u0434%u0440%u0435%u0441%20....%20%20%20%20%20%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%29%20%7B%20%0A%20%20%20%20%20%20%20%20gClipboard.write%28%20content.location%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20//%20%u0437%u043D%u0430%u0447%u043E%u043A%20%u0438%u0434%u0435%u043D%u0442%u0438%u0444%u0438%u043A%u0430%u0446%u0438%u0438%20%u0441%u0430%u0439%u0442%u0430%20%u043C%u0438%u0433%u0430%u0435%u0442%20%u043A%u0440%u0430%u0441%u043D%u044B%u043C%20....%0A%20%20%20%20%20%20%20%20document.getElementById%28%22identity-box%22%29.setAttribute%28%22style%22%2C%20%22background%3A%20red%3B%22%29%3B%0A%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%20document.getElementById%28%22identity-box%22%29.removeAttribute%28%22style%22%29%20%7D%2C%20500%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%7D%2C%20true%2C%20document.getElementById%28%22identity-box%22%29%20%29%3B%0A%0A%20%20%20%0A%20%20%20%0A//%20%u0414%u043E%u043F%u043E%u043B%u043D%u0438%u0442%u0435%u043B%u044C%u043D%u044B%u0435%20%u0432%u043E%u0437%u043C%u043E%u0436%u043D%u043E%u0441%u0442%u0438%20%u0434%u043B%u044F%20%u0434%u0432%u043E%u0439%u043D%u043E%u0433%u043E%20%u043A%u043B%u0438%u043A%u0430%20%u043C%u044B%u0448%u0438%2C%20%u0435%u0441%u043B%u0438%20%u044D%u0442%u043E%20%u0440%u0430%u0437%u0440%u0435%u0448%u0435%u043D%u043E%20%u0432%20%27about%3Aconfig%27%20................................%0Afunction%20handleDblClick%28e%29%20%7B%0A%0A%20%20var%20node%20%3D%20e.target%3B%0A%20%20var%20editor%20%3D%20node.editor%3B%0A%20%20%0A%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0438%u0442%u044C%20%u0432%u0441%u0435%20%u0432%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u044B%u0445%20%u043F%u043E%u043B%u044F%u0445%20....%0A%20%20if%20%28%20e.button%20%3D%3D%200%20%26%26%20custombuttons.getPrefs%28%22Autocopy.selectWithDoubleClick%22%29%20%29%20%7B%20%20%20%20%0A%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20if%20%28%20/input%7Ctextbox%7Ctextarea/.test%28%20node.localName%20%29%20%29%20%21editor%20%3F%20node.select%28%29%20%3A%20editor.selectAll%28%29%3B%0A%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%0A%20%20//%20%u0441%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20....%0A%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20cbu.getPrefs%28%22Autocopy.copyWithDoubleClick%22%29%20%29%20%7B%0A%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%21editor%20%3F%20goDoCommand%28%22cmd_copy%22%29%20%3A%20editor.copy%28%29%3B%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20try%20%7B%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20var%20box%20%3D%20%28%20node.textbox%20%7C%7C%20node%20%29.inputField.parentNode%3B%0A%20%20%20%20%20%20%20%20%20%20%20var%20popup%20%3D%20box.ownerDocument.getAnonymousElementByAttribute%28%20box%2C%20%22anonid%22%2C%20%22input-box-contextmenu%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20popup.hidePopup%28%29%2C%2050%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20catch%28e%29%20%7B%20document.getElementById%28%22contentAreaContextMenu%22%29.hidePopup%28%29%20%7D%3B%20%0A%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%0A%7D%3B%0AaddEventListener%28%22dblclick%22%2C%20handleDblClick%2C%20false%2C%20gBrowser%20%29%3B%0A%0A%0A%0A//%20%u0441%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0438%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%20%u0431%u0435%u0437%20%u0437%u0430%u043F%u0440%u043E%u0441%u0430%20....%20%20%20%20%0AaddEventListener%28%22click%22%2C%20function%28e%29%20%7B%0A%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20cbu.getPrefs%28%22Autocopy.saveWithDoubleClick%22%29%20%26%26%20e.target.localName%20%3D%3D%20%27img%27%29%20%7B%0A%20%20%20%20%20%20%20%20setTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20saveImageURL%28%20gContextMenu.imageURL%2C%200%2C%200%2C%200%2C%201%2C%20null%2C%20content.document%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20document.getElementById%28%22contentAreaContextMenu%22%29.hidePopup%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%2C%2020%29%3B%0A%20%20%20%20%20%20%20%20%7D%20%20%0A%7D%2C%20false%2C%20gBrowser%20%29%3B%0A%0A%0A%0A//%20%u041D%u0430%u0431%u043B%u044E%u0434%u0430%u0442%u0435%u043B%u044C%20%u0441%u043B%u0435%u0434%u0438%u0442%20%u0437%u0430%20%u043E%u0442%u043A%u0440%u044B%u0442%u0438%u0435%u043C%20%u043E%u043A%u043E%u043D%20%u0430%u0434%u0440%u0435%u0441%u0430%20%u043A%u043E%u0442%u043E%u0440%u044B%u0445%20%u0443%u043A%u0430%u0437%u0430%u043D%u043D%u044B%20%u0432%20%u043A%u043E%u0434%u0435%20%u0438%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0435%u0442%20%u0438%u043C%20%u043E%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%u0438%20................................%0Avar%20observer%20%3D%20%7B%20%20%0A%20%20%20%20%20%20%20observe%3A%20function%28subject%2C%20topic%2C%20data%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20subject.addEventListener%28%22load%22%2C%20this%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20%20handleEvent%3A%20function%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20doc%20%3D%20e.target%3B%0A%20%20%20%20%20%20%20%20%20%20var%20win%20%3D%20doc.defaultView%3B%0A%20%20%20%20%20%20%20%20%20%20var%20href%20%3D%20doc.location.href%3B%20%0A%20%20%20%20%20%20%20%20%20%20win.removeEventListener%28%22load%22%2C%20this%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20//%20%u0437%u0430%u043A%u0440%u044B%u0432%u0430%u0442%u044C%20%27%u0418%u043D%u0444%u043E%u0440%u043C%u0430%u0446%u0438%u044E%20%u043E%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%27%20%u0438%u043B%u0438%20%27%u0411%u0438%u0431%u043B%u0438%u043E%u0442%u0435%u043A%u0443%27%20%u0434%u0432%u043E%u0439%u043D%u044B%u043C%20%u043A%u043B%u0438%u043A%u043E%u043C%20%u043D%u0430%20%u043D%u0435%u0439%20....%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20/pageInfo.xul%7Cplaces.xul/.test%28%20href%20%29%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.addEventListener%28%22dblclick%22%2C%20function%20close%28%29%20%7B%20this.close%28%29%20%7D%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.addEventListener%28%22unload%22%2C%20function%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.removeEventListener%28e.type%2C%20arguments.callee%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.removeEventListener%28%22dblclick%22%2C%20close%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%20false%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20//%20%u0434%u043E%u0431%u0430%u0432%u043B%u044F%u0442%u044C%20%u0438%20%u0443%u0434%u0430%u043B%u044F%u0442%u044C%20%u043E%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%u0438%20%u043A%u043B%u0438%u043A%u0430%20%u0434%u043B%u044F%20%u0440%u0435%u0434%u0430%u043A%u0442%u043E%u0440%u0430%20Custom%20Buttons%20....%0A%20%20%20%20%20%20%20%20%20%20if%20%28%20href.substring%280%2C%2041%29%20%3D%3D%20%22chrome%3A//custombuttons/content/editor.xul%22%20%29%20%7B%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.addEventListener%28%22click%22%2C%20middleMousePaste%2C%20true%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.addEventListener%28%22dblclick%22%2C%20handleDblClick%2C%20false%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.addEventListener%28%22unload%22%2C%20function%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.removeEventListener%28e.type%2C%20arguments.callee%2C%20false%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.removeEventListener%28%22click%22%2C%20middleMousePaste%2C%20true%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20win.removeEventListener%28%22dblclick%22%2C%20handleDblClick%2C%20false%20%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%20false%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20%7D%0A%7D%3B%0AServices.obs.addObserver%28observer%2C%20%22domwindowopened%22%2C%20false%29%3B%0AaddDestructor%28function%28%29%20%7B%20Services.obs.removeObserver%28observer%2C%20%22domwindowopened%22%2C%20false%29%20%7D%29%3B%20%0A%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.tooltipText%20%3D%20%22Autocopy%20%5Cn%u041B%3A%20%u041F%u0435%u0440%u0435%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0430%u0432%u0442%u043E%u043C%u0430%u0442%u0438%u0447%u0435%u0441%u043A%u043E%u0435%20%u043A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u043D%u0438%u0435%20%5Cn%u041F%3A%20%u041C%u0435%u043D%u044E%20+%20CB%20%u043C%u0435%u043D%u044E%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%0A%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

04-09-2013 21:18:51

Loom пишет

И можно ли сделать выделение слова по одинарному ЛКМ, а абзаца по двойному?

Я не знаю как :/

bunda1
Спасибо большое за кнопку, а с одним кликом вообще отлично стало. :)

bunda1 пишет

Я не знаю как :/

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

А не знаете ли, можно сделать кнопку для зумирования изображений колесиком? Т.е. открываешь в отдельной вкладке ссылку *.png, *.jpeg, *.gif, и как бы зажимается Ctrl. Вариант с зажатием ПКМ в FireGestures не подходит, там жесты, к которым слишком привык за множество лет.

Loom пишет

А не знаете ли, можно сделать кнопку для зумирования изображений колесиком? Т.е. открываешь в отдельной вкладке ссылку *.png, *.jpeg, *.gif, и как бы зажимается Ctrl. Вариант с зажатием ПКМ в FireGestures не подходит, там жесты, к которым слишком привык за множество лет.

Завтра попробую сделать.

В кнопке Compact Menu( Firefox 4 + ) не работает пункт меню Новая приватная вкладка
87sXgHxR.jpg
И меню Adblock Plus
3nWWRroS.jpg

rgdru
Может попробуй удалить старую и поставь эту

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

Выделить код

Код:

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%3ECompact%20Menu%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBEAAAEAIACsBAAAFgAAACgAAAAQAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAMSAAcROg8hOGEvQV1hL0JdOQ4iOBIABxH7+/uBqKioqv7+/oAAAAAAAAAAAAAAAAAAAAAAAAAAAREABhB6PEx23HZ32+uLe/7rfGv/63tr/+uKev7vv7/tp52g10BAQP6vr6+z////fwAAAAAAAAAAAAAAAR0CEB3AaHK/629j/+FbVP/bUU7/10xK/9ZLSv/sp6X/26mm/0BAQP9AQED/QEBA/9jY2KH///9/AAAAAA8ABQ+6X22+1UpK/8Y2P/+8KDX/tB0v/6sZKf+uGCz/1pae/0BAQP9AQED/QEBA/0BAQP9AQED+8fHxkQAAAAJ0M0hzxz1G/7AYLv+lDCX/ng0b/5APD/+FFgL/1Zid/3BfYf9AQED/QEBA/0BAQP9AQED/QEBA/25ubtgPAAUPt0dc2KULJf+pFCb/tygu/7w1L/+FGAH/nSsW/8OSjf+gf3//qIKB/9aTlf/Vi5P/0YSR/9yosuzw7/CHMAobMLw2Sf60Iyz/xD41/9NSPv/cYUT/0188/+VwSf/IWzj/WhID/0kFAP9zGhT/yEM4/7grL/+9Okn+Nw0fNFYoOVLAOT3/zEg6/9xhRP/qdUv/64RR/+uNVf/rk1f/65NX/9t1Q/9mGQD/YhcE/9NeP//RTz3/xEA//1wsPVlWKDhR01dI/+BnRv/rf0//65JX/+ugXP/rqV7/661g/+utYf/McDH/gS4C/4UyD//CXjX/5G5I/9hdSf9dLD5YMAoaMOp+Zf7rgE//65dZ/+upX//rtGP/671n/+vBaP/rslz/rk4K/51CBf/rjUf/64RI/+uBTf/rhGf+NQweNA4ABg7Tdm3X65NY/+uqX//rumX/68Rq/+vMbf/r0G//68pn/+u+X//cgTD/67hi/+uuYf/rmlr/2Hxv2REABhAAAAACdTlIceudYP/rrV7/66xW/+vMbf/r03D/69Zw/+vVcP/r1HD/68tr/9x+Pv/rkUz/66xo/3Y7SXMAAAACAAAAAA8ABQ+2Z2O70WIX/+uEIf/rvVb/68JY/+vPbf/rsUn/68FX/+uVRf+dNBL/zGw0/8h7dL0PAAUPAAAAAAAAAAAAAAABHAEPHL5qWrzrr0r/69CA/+vQgf/r3qv/696r/+vNgP/rrnb/rEgo/6VXW70dAg8cAAAAAQAAAAAAAAAAAAAAAAAAAAEPAAUPdztFceiUcNjrz47+69yw/+vUmf/ryIT+03pe2XIzRHMPAAUPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIPAAUPMgscMlcpOlNYKTlUMwscMg8ABQ8AAAACAAAAAAAAAAAAAAAAAAAAAP//rEHwA6xBwAGsQYAArEGAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEGAAaxBgAGsQcADrEHwD6xB%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bconst%0A%09nodes%20%3D%20%5B%0A%09%09%22file-menu%22%2C%0A%09%09%22edit-menu%22%2C%0A%09%09%22view-menu%22%2C%0A%09%09%22bookmarksMenu%22%2C%0A%09%09%22history-menu%22%2C%0A%09%09%22tools-menu%22%2C%0A%09%09%22helpMenu%22%0A%0A%09%5D.map%28function%28id%29%20document.getElementById%28id%29%29%2C%0A%09menubar%20%3D%20true%2C%0A%09parent%20%3D%20nodes%5B0%5D.parentNode%2C%0A%09popup%20%3D%20this.appendChild%28document.createElement%28%22menupopup%22%29%29%2C%0A%09popupAttrs%20%3D%20%7B%0A%09%09id%3A%20%22Compact-Menu-menupopup%22%2C%0A%09%09position%3A%20%22after_start%22%2C%0A%09%09context%3A%20%22toolbar-context-menu%22%20//%20%22%22%0A%09%7D%2C%0A%09cssURI%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28%27%5C%0A%09%09%23appmenu-button%2C%20.titlebar-placeholder%5Btype%3D%22appmenu-button%22%5D%25menubar%25%20%7B%5Cn%5C%0A%09%09%09display%3A%20none%20%21important%3B%5Cn%5C%0A%09%09%7D%5C%0A%09%27.replace%28/%5E%28%5Ct%5Ct%29/gm%2C%20%22%22%29.replace%28%22%25menubar%25%22%2C%20menubar%20%3F%20%22%22%20%3A%20%22%2C%20%23toolbar-menubar%22%29%29%29%2C%0A%09sss%20%3D%20Cc%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D.getService%28Ci.nsIStyleSheetService%29%2C%0A%09sheetType%20%3D%20sss.USER_SHEET%3B%0A%09%0Afor%20%28var%20attr%20in%20popupAttrs%29%20popup.setAttribute%28attr%2C%20popupAttrs%5Battr%5D%29%3B%0Anodes.forEach%28function%28node%29%20popup.appendChild%28node%29%29%3B%0AaddDestructor%28function%28%29%20nodes.forEach%28function%28node%29%20parent.appendChild%28node%29%29%29%3B%0Aif%20%28menubar%20%26%26%20%21parent.childNodes.length%29%20%7B%0A%09const%20dummy%20%3D%20parent.appendChild%28document.createElement%28%22menu%22%29%29%3B%0A%09addDestructor%28function%28%29%20parent.removeChild%28dummy%29%29%3B%0A%7D%0Asss.loadAndRegisterSheet%28cssURI%2C%20sheetType%29%3B%0AaddDestructor%28function%28%29%20sss.unregisterSheet%28cssURI%2C%20sheetType%29%29%3B%0A%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%09if%20%28%21e.button%20%26%26%20e.target%20%3D%3D%20this%29%20popup.openPopup%28this%29%3B%0A%7D%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bif%20%28%21event.target%29%20this.click%28%29%3B%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Dumby
Спасибо,теперь всё работает так как и должно быть.

У меня в кнопке выполняется команда textarea.select()
И если в textarea много текста, т. е. есть полоса вертикальной прокрутки, то она прокручивается в самый конец.
Я вместо select() могу сделать эмуляцию нажатия Ctrl + А, тогда само не прокручивается, но интересно знать, эта прокрутка в конец при select() - она и должна быть?

Или это дело только у меня?

Чайник пишет

У меня в кнопке выполняется команда textarea.select()
И если в textarea много текста, о она прокручивается в самый конец.
... интересно знать, эта прокрутка в конец при select() - она и должна быть?
Или это дело только у меня?

Я тоже такое наблюдаю, может добавь за;
textarea.select();
setTimeout(function() { goDoCommand('cmd_scrollTop') }, 50);

Наверно из-за этого

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

Выделить код

Код:

data:image/png;base64,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


Ещё вот так не прокручивает
скрытый текст

Выделить код

Код:

textarea.QueryInterface(Ci.nsIDOMNSEditableElement).editor.selectAll();
textarea.focus();

bunda1 и Dumby
Спасибо  ;)

Уважаемые программисты, нельзя ли соорудить кнопку (точнее, две: "вперед" и "назад"), имитирующую работу вот этого расширения?

Vladimir_S
Если расширение не работает из-за nsIHistoryEntry,
то попроси кого-нибудь перепаковать без него.

А пока, для проверки, можешь попробовать положить в начало Инициализации
какой-нибудь кнопки эту цитату, может расширение начнёт работать

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

Выделить код

Код:

RewindForwardService.getHistoryEntryAt = function (aIndex) 
{
    var entry  = gBrowser.sessionHistory.getEntryAtIndex(aIndex, false);
    var info = { URI : null, referrerURI : null };
    if (entry) {
        entry = entry/*.QueryInterface(Components.interfaces.nsIHistoryEntry)*/
                    .QueryInterface(Components.interfaces.nsISHEntry);
        if (entry.URI)
            info.URI = entry.URI;
        if (entry.referrerURI)
            info.referrerURI = entry.referrerURI;
    }
    return info;
}

Dumby пишет

Vladimir_S
Если расширение не работает из-за nsIHistoryEntry,
то попроси кого-нибудь перепаковать без него.

А пёс его знает из-за чего! Отвалилось в Авроре (26.0а2). До этого пару раз обращался к Hydrolizer'у, он мне это расширение правил, а вот сейчас, похоже, ушел человек совсем.

Dumby пишет

А пока, для проверки, можешь попробовать положить в начало Инициализации
какой-нибудь кнопки эту цитату, может расширение начнёт работать

А с этого места, если не трудно, помедленнее, поподробнее и попошаговее.

Vladimir_S пишет

А с этого места, если не трудно, помедленнее, поподробнее и попошаговее.

1) установить рашсирение CB
2) ПКМ по настройке панели - добавить новую кнопку
3) вставляешь код во вкладку инициализация (желателно дать кнопке какое-то имя для отличия) - сохраняешь
4) в настройках интерфейса вытаскиваешь эту новую кнопку в любое место на панели. (лично я сую в панель меню, которое у меня скрыто)

feas, благодарю.

feas пишет

1) установить рашсирение CB

Имеется.

feas пишет

2) ПКМ по настройке панели - добавить новую кнопку
3) вставляешь код во вкладку инициализация (желателно дать кнопке какое-то имя для отличия) - сохраняешь
4) в настройках интерфейса вытаскиваешь эту новую кнопку в любое место на панели. (лично я сую в панель меню, которое у меня скрыто)

Вечером  на домашнем компе попробую. Спасибо.

Да, только вот что: самО СВ-то под Аврору и выше допилили? Помнится, когда Аврора вышла, так оно отвалилось.

Vladimir_S пишет

Да, только вот что: самО СВ-то под Аврору и выше допилили? Помнится, когда Аврора вышла, так оно отвалилось.

Custom Buttons 0.0.5.7pre1
http://downloads.mozdev.org/custombutto … 130923.xpi

Dumby, feas, wolwerine, друзья, коллеги - огромнейшее вам спасибо! Всё получилось, любимый аддон вновь заработал, СВ тоже, опять я дома на Аврору перешел, как привык - класс! Осталось только с менеджером загрузок разобраться - предпочитаю старый, ну да ладно, буду к новому привыкать, либо расширение на досуге поищу: ведь не один я, поди, такой реторгад.

feas пишет

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

Ну а у меня скрыта панель закладок, куда кнопку и всунул.
Вот если бы кто-нибудь еще с этим помог:

Dumby пишет

Если расширение не работает из-за nsIHistoryEntry, то попроси кого-нибудь перепаковать без него.

- ну да не обязательно, и так сойдёт.

Vladimir_S пишет

Осталось только с менеджером загрузок разобраться - предпочитаю старый

№11753 :D

feas пишет
Vladimir_S пишет

Осталось только с менеджером загрузок разобраться - предпочитаю старый

№11753 :D

Да ну - так даже не интересно! :blush: Я-то собирался на выходных неторопясь поковыряться - а тут на тебе! :):):)
P.S. И ведь видел же эту владову находку, думал взять на заметку, но поскольку по вышеописанным причинам перспектива слезания с 25.0 в обозримом будущем не просматривалась - забыл.
А вообще - всё прекрасно-чудесно. Спасибо!

bunda1, что на что нужно поменять в вашей кнопке Save, чтобы файл сохранялся не на рабочий стол и каждый день новый, а дописывался уже имеющийся и находящийся на постоянке в определенном мной месте.
Я говорю о п. Сохранить выделенный текст в файл, в контекстном меню.
Спасибо.

ps Дабы отказаться от Save Text to File

okkamas_knife пишет

вроде так

Работает, только что-то с кодировкой, кирилица корябушками (

okkamas_knife пишет

а открываешь чем?
сам файл в UTF-8
как вариант решения проблемы

файл создан в UTF-8
открываю в Notepad++
с htm тоже всё бито

Uxapb пишет

bunda1, что на что нужно поменять в вашей кнопке Save, чтобы файл сохранялся не на рабочий стол и каждый день новый, а дописывался уже имеющийся и находящийся на постоянке в определенном мной месте.
Я говорю о п. Сохранить выделенный текст в файл, в контекстном меню.
Спасибо.

ps Дабы отказаться от Save Text to File

Есть другая кнопка которая делает то что ты просишь, Stf+:

Выделить код

Код:

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%3EStf+%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAWAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAWgAAAFoAAABaAAAAWgAAAFoAAABaAAAAWgAAAFoAAABaAAAAWgAAAFoAAABaAAAAWgAAAFsAAABYAAAAFwAAAACISi/ml2RK9ZdjSfWUYEX1jlpA9ZdjSfWXY0r1l2NL9ZdjS/WXY0v1l2NL9ZdjS/WXY0v1lWFI9J5mSvljMR7lAAAAPgIBAQDBhmP/6cOL/+Kxcf/Fo3L/kHdV/7GNXf/esHL/3q5t/9ysbP/drWz/3a1t/92tbf/erm7/3bBz/vLKlP+FUTrtAAAAPwMCAgC4f1791qtt/tOkZv7e1Mn+jIiE/lZMPv6djHX+4860/uvWu/7p1Ln+6tS4/uvVuv7nz7L+yphV/eK1fv9/TTjsAAAAPwMCAgC5gF//3LR6/9ixff//////29nU/5CRlP9SU1X/paGd//Xr4P//8OP/+uzc//zs2v/57uH/0aRm/ue+iv+ATTftAAAAPwMCAgC5gF//4LiC/9myfv///v3/8eXW/9LPy/+Li4z/RkI7/5OIef/l077/9N/I//Texv/36dn/06Zs/urBkP9/TDbtAAAAPwMCAgC5gGD/5sab/9u1hP////7/+vPp//Pp3f/Iwbr/foCE/0VERP+Lg3r/4NG///rm0P/369v/1Klx/uvFlv9/TDXtAAAAPwMCAgC7gmP/7dS1/926jf/+/Pv/9uzg//jt4P/06dv/u7m3/5l2QP90ShH/fXVv/+DPvP/57d3/1ax0/u7JnP9/SzTtAAAAPwMCAgC8hWj/8Nu//967j////////////////v//////9vTz/9+8gP/GgRL/ckwc/4eBff/n3tH/2bB5/u/Opf9/TDbtAAAAPwMCAgC9hmr/9OPM/9qzgv/p07T/6tO2/+rTtf/p0rT/7de7/97GqP/SoVH/x4IT/2xMJP+Admr/zKRw/vXUrf9/TTjtAAAAPwMCAgC+iW7/9ufT/+rRtP/lyKX/5Mim/+THpv/kx6T/4sWh/+rLp/+9pIf/vZJP/8WCGf9iPhH/fW9c/unNrP+CTzrtAAAAPwMCAgC/inD/+OrX//Ddyv/559X//OrV//ro0//659L/+ufS//zo0v/m1cL/lod4/7iPT//Ihx//Y0ck/pSLg/95STPtAAAAPwICAgC/i3L/+Ova//fk0P/Ct6v/o52W/6uknP+qo5v/q6Sc/6qjm/+1raT/rqij/2ZhX/+wj1n/w4EZ/m1QLv89JB/zAAAASgEBAQDAjnb9+O3e//rn1P+jnpn/lZib/6eoqf+rrK7/srK0/7y9vv+0trj/oaGi/6Cho/9eXF7/w59n/8qFF/9KKgP9AAAAhQIBAAW+h2z/+PLk/P/15fusqKP+oaKi/7Kysf+3trb/vby8/8nJyf+3t7f/cnFx/6Wlpf+fmpL+dXVx+66UYfyuhUP/Ligj1QAAAFqBPSKJ2KWK//PNt/+klo78oKKk+7Cvr/u1tLX7vLu7+8jIyPu3t7b7dHNz+52ho/vHrJz+y6WP/51vX/61jVvuxo0s/z0nCsERBgMDKw8ERh4AAEFjWFS9sLKz/62srfyzs7T/urm5/8HCwv/AwMD/sbGx/cDDw/9GNC7SKgsAaSgNAkMwKSQtq4VIsks0EmcBAQACAQEBAgAAAAAjIyNKOjo6fjU1NXM2NjZ1NjY2dTY2NnU3Nzd1Ozs7czw8PH0UFBQ4AAAAAAEBAQEAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.leftclick%20%3D%20function%28%29%20%7B%20%20//%20%u041B%u041A%u041C%20%0A%20%20%20%20%20if%20%28%20pathToFile%28%29%20%29%20saveSelectionToTxt%28%29%3B%0A%7D%3B%0A%0Athis.leftDclick%20%3D%20function%28%29%20%7B%20%20//%20%u0434%u0432%u043E%u0439%u043D%u043E%u0439%20%u041B%u041A%u041C%20%0A%20%20%20%20%20saveSelectionToTxt%28%29%3B%0A%7D%3B%0Athis.setAttribute%28%27onclick%27%2C%20%27gQuot%28event%2C%20this%29%27%29%3B%0Athis.setAttribute%28%27ondblclick%27%2C%20%27gQuot%28event%2C%20this%29%27%29%3B%0A%0A%0A%0A/*%20%u0421%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u043B%u0438%20%u0432%u0435%u0441%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%u043A%u0430%u043A%20txt%20%u0444%u0430%u0439%u043B%20................................*/%0Afunction%20saveSelectionToTxt%28%29%20%7B%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0438%u0442%u044C%20%u0432%u0441%u0451%20%u0435%u0441%u043B%u0438%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0435%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%20....%0A%20%20%20%20%20var%20all%20%3D%20%21getSelect%28%29%3B%0A%20%20%20%20%20if%20%28%20all%20%29%20document.getElementById%28%22cmd_selectAll%22%29.doCommand%28%29%3B%20%0A%0A%20%20%20%20%20var%20sel%20%3D%20getSelect%28%29%3B%0A%20%20%20%20%20if%20%28%20%21sel%20%29%20return%3B%20%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u043F%u0435%u0440%u0435%u043A%u043E%u0434%u0438%u0440%u043E%u0432%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20UTF-8%20....%0A%20%20%20%20%20var%20converter%20%3D%20Components.classes%5B%22@mozilla.org/intl/scriptableunicodeconverter%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsIScriptableUnicodeConverter%29%3B%0A%20%20%20%20%20converter.charset%20%3D%20%22utf-8%22%20%3B%0A%20%20%20%20%20var%20text%20%3D%20converter.ConvertFromUnicode%28%20sel%20%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20//%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u043F%u0440%u0435%u0434%u044B%u0434%u0443%u0449%u0438%u0439%20%u043F%u0443%u0442%u044C%20%u0434%u043B%u044F%20%u0441%u043E%u0445%u0440%u0430%u043D%u0435%u043D%u0438%u044F%20%u0438%u0437%20%27about%3Aconfig%27%20%u0438%u043B%u0438%20%u0434%u0438%u0441%u043A%20C%3A%20....%0A%20%20%20%20%20var%20pathToFile%20%3D%20Application.prefs.getValue%28%22CB.Stf.pathToSave%22%2C%200%29%0A%20%20%20%20%20var%20pathToFile%20%3D%20%28%20pathToFile%20%3D%3D%200%20%29%20%3F%20%28%20%22C%3A%5C%5C%22%20+%20getDocTitle%28%29%20%29%20%3A%20pathToFile%3B%20%20%20%20%20%0A%20%20%20%20%20%0A%20%20%20%20%20var%20file%20%3D%20Components.classes%5B%27@mozilla.org/file/local%3B1%27%5D.createInstance%28Components.interfaces.nsILocalFile%29%3B%0A%20%20%20%20%20file.initWithPath%28%20pathToFile%20+%20%22.txt%22%20%29%3B%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0434%u043B%u044F%20%u0434%u043E%u0431%u0430%u0432%u043B%u0435%u043D%u0438%u044F%20%u043A%20%u0441%u0443%u0449%u0435%u0441%u0442%u0432%u0443%u044E%u0449%u0435%u043C%u0443%20%u0438%u0437%20%u0442%u0435%u043A%u0443%u0449%u0435%u0433%u043E%20%u0432%u0440%u0435%u043C%u0435%u043D%u0438%20%u0438%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u043E%u0433%u043E%20%u0442%u0435%u043A%u0441%u0442%u0430%20....%0A%20%20%20%20%20var%20line%20%3D%20%22%20%20......................................................%22%0A%20%20%20%20%20var%20text%20%3D%20file.exists%28%29%3F%20%28%20%22%5Cn%22%20+%20%22%5Cn%22%20+%20%22%5Cn%22%20+%20getTime%28%29%20+%20line%20+%20%22%5Cn%22%20+%20text%20%29%3A%20text%3B%0A%0A%20%20%20%20%20//%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u0442%u0435%u0441%u0442%u043E%u0432%u044B%u0439%20%u0444%u0430%u0439%u043B%20%u0435%u0441%u043B%u0438%20%u043E%u043D%20%u043D%u0435%20%u0441%u0443%u0449%u0435%u0441%u0442%u0432%u0443%u0435%u0442%20%u0438%u043D%u0430%u0447%u0435%20%u0434%u043E%u0431%u0430%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u0432%20%u0444%u0430%u0439%u043B%20....%0A%20%20%20%20%20var%20foStream%20%3D%20Components.classes%5B%22@mozilla.org/network/file-output-stream%3B1%22%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28Components.interfaces.nsIFileOutputStream%29%3B%0A%20%20%20%20%20%28%20%21file.exists%28%29%20%29%3F%20foStream.init%28file%2C%200x02%7C0x08%7C0x20%2C%200666%2C%200%29%3A%20foStream.init%28file%2C%200x02%20%7C%200x10%2C%200664%2C%200%29%3B%0A%20%20%20%20%20foStream.write%28text%2C%20text.length%29%3B%0A%20%20%20%20%20foStream.close%28%29%3B%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0432%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20....%0A%20%20%20%20%20var%20alertSlide%20%3D%20Cc%5B%22@mozilla.org/embedcomp/window-watcher%3B1%22%5D.getService%28Components.interfaces.nsIWindowWatcher%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.openWindow%28null%2C%20%22chrome%3A//global/content/alerts/alert.xul%22%2C%20%22_blank%22%2C%20%22chrome%2Ctitlebar%3Dno%2Cpopup%3Dyes%22%2C%20null%29%3B%0A%20%20%20%20%20alertSlide.arguments%20%3D%20%5Bself.image%2C%20self.label%2C%20%22%u0422%u0435%u043A%u0441%u0442%20%u0431%u044B%u043B%20%u0441%u043E%u0445%u0440%u0430%u043D%u0435%u043D%22%2C%20null%2C%20false%2C%20%22%22%5D%3B%0A%20%20%20%20%20alertSlide.setTimeout%28function%28%29%20%7B%20alertSlide.close%28%29%20%7D%2C%201500%29%3B%0A%0A%20%20%20%20%20if%20%28%20all%20%29%20goDoCommand%28%22cmd_selectNone%22%29%3B%20%0A%7D%3B%0A%0A%0A%0A//%20%u0423%u0441%u0442%u0430%u043D%u043E%u0432%u043A%u0430%20%u043F%u0443%u0442%u0438%20%u0438%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u044F%20%u0434%u043B%u044F%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0433%u043E%20%u0444%u0430%u0439%u043B%u0430%2C%20%u0438%u043D%u0430%u0447%u0435%20%u043E%u0442%u0434%u0430%u0441%u0442%20%27false%27%20................................%0Afunction%20pathToFile%28%29%20%7B%0A%0A%20%20%20%20%20//%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u043F%u0440%u0435%u0434%u044B%u0434%u0443%u0449%u0438%u0439%20%u043F%u0443%u0442%u044C%20%u0434%u043B%u044F%20%u0441%u043E%u0445%u0440%u0430%u043D%u0435%u043D%u0438%u044F%20%u0438%u0437%20%27about%3Aconfig%27%20%u0438%u043B%u0438%20%u0434%u0438%u0441%u043A%20C%3A%20....%0A%20%20%20%20%20var%20pathToFile%20%3D%20Application.prefs.getValue%28%22CB.Stf.pathToSave%22%2C%200%29%3B%0A%20%20%20%20%20var%20pathToFile%20%3D%20%28%20pathToFile%20%3D%3D%200%20%29%3F%20%22C%3A%5C%5C%22%3A%20pathToFile%3B%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0441%u043E%u0437%u0434%u0430%u0442%u044C%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%20%u0444%u0430%u0439%u043B%u0430%20%u0438%u0437%20%u0437%u0430%u0433%u043E%u043B%u043E%u0432%u043A%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%20%u0442%u0435%u043A%u0443%u0449%u0435%u0433%u043E%20%u0432%u0440%u0435%u043C%u0435%u043D%u0438%20....%0A%20%20%20%20%20var%20fileTitle%20%3D%20getDocTitle%28%29%20+%20%27%20%20%27%20+%20getTime%28%29%3B%0A%0A%20%20%20%20%20//%20%u0434%u0438%u0430%u043B%u043E%u0433%20%u0441%u043E%u0437%u0434%u0430%u043D%u0438%u044F%20%u0438%20%u0443%u0441%u0442%u0430%u043D%u043E%u0432%u043A%u0438%20%u043F%u0443%u0442%u0438%20....%0A%20%20%20%20%20var%20fp%20%3D%20Cc%5B%22@mozilla.org/filepicker%3B1%22%5D.createInstance%28Components.interfaces.nsIFilePicker%29%3B%0A%20%20%20%20%20var%20dir%20%3D%20Cc%5B%22@mozilla.org/file/local%3B1%22%5D.createInstance%28Components.interfaces.nsILocalFile%29%3B%0A%20%20%20%20%20fp.init%28window%2C%20%22%u0423%u043A%u0430%u0436%u0438%u0442%u0435%20%u043F%u0443%u0442%u044C%20%u043A%20%u0444%u0430%u0439%u043B%u0443%20%u0438%20%u0435%u0433%u043E%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%21%22%2C%20fp.modeSave%29%3B%0A%20%20%20%20%20fp.appendFilters%28%20fp.filterText%20%29%3B%0A%20%20%20%20%20fp.defaultString%20%3D%20fileTitle%3B%0A%20%20%20%20%20dir.initWithPath%28%20pathToFile%20%29%3B%0A%20%20%20%20%20fp.displayDirectory%20%3D%20dir%3B%0A%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20fp.show%28%29%20%3D%3D%20fp.returnCancel%20%29%20return%20false%3B%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u0437%u0430%u043F%u0438%u0441%u0430%u0442%u044C%20%u043F%u0443%u0442%u044C%20%u043A%20%u0444%u0430%u0439%u043B%u0443%20%u0432%20%27about%3Aconfig%27%20....%0A%20%20%20%20%20Application.prefs.setValue%28%22CB.Stf.pathToSave%22%2C%20fp.file.path%20%29%3B%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20return%20true%3B%0A%7D%3B%0A%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0442%u0435%u043A%u0443%u0449%u0435%u0435%20%u0432%u0440%u0435%u043C%u044F%20................................%0Afunction%20getTime%28%29%20%7B%0A%20%20%20%20%20var%20now%20%3D%20new%20Date%28%29%3B%0A%20%20%20%20%20return%20now.toLocaleFormat%28%22%25H%3A%25M%3A%25S%22%29%3B%0A%7D%3B%0A%0A%0A%0A/*%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0437%u0430%u0433%u043E%u043B%u043E%u0432%u043E%u043A%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%u043B%u0438%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%20%u0434%u043E%u043C%u0435%u043D%u0430%20%u0435%u0441%u043B%u0438%20%u0437%u0430%u0433%u043E%u043B%u043E%u0432%u043A%u0430%20%u0443%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u043D%u0435%u0442%0A%20%20%20%u0438%u043B%u0438%20%u043D%u0430%u0437%u0432%u0430%u043D%u0438%u0435%20%u043F%u0440%u043E%u0442%u043E%u043A%u043E%u043B%u0430%20%u0435%u0441%u043B%u0438%20%u0434%u043E%u043C%u0435%u043D%u0430%20%u043D%u0435%u0442%20................................*/%0Afunction%20getDocTitle%28%29%20%7B%0A%20%20%20%20var%20protocol%20%3D%20content.document.location.protocol%3B%0A%20%20%20%20if%20%28protocol%20%3D%3D%20%22chrome%3A%22%29%20return%20%22chrome%22%3B%0A%20%20%20%20if%20%28protocol%20%3D%3D%20%22data%3A%22%29%20return%20%22data%22%3B%0A%20%20%20%20var%20docTitle%20%3D%20content.document.title%20%7C%7C%20content.document.domain%20%7C%7C%20gBrowser.mCurrentTab.label%3B%0A%20%20%20%20//%20%u0437%u0430%u043C%u0435%u043D%u0438%u0442%u044C%20%u043D%u0435%u0434%u043E%u043F%u0443%u0441%u0442%u0438%u043C%u044B%u0435%20%u0441%u0438%u043C%u0432%u043E%u043B%u044B%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u0442%u044C%20%u043B%u0438%u0448%u043D%u0438%u0435%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%20....%20%0A%20%20%20%20var%20docTitle%20%3D%20docTitle.replace%28/%5B%5C%5C%5C/%3C%3E%3F*%7C%22%5D+/g%2C%20%22%20%22%29%0A%20%20%20%20%09%09%09%20%20%20.replace%28/%3A/g%2C%20%22%u05C3%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.replace%28/%5Cs%5Cs+/g%2C%20%22%20%22%29%3B%20%0A%20%20%20%20return%20docTitle%3B%0A%7D%3B%0A%0A%0A%0A/*%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%u043B%u0438%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0433%u043E%20%u043F%u043E%u043B%u044F%2C%0A%20%20%20%u0435%u0441%u043B%u0438%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0435%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%20%20%u0444%u0443%u043D%u043A%u0446%u0438%u044F%20%u043E%u0442%u0434%u0430%u0441%u0442%20%27false%27%20................................*/%0Afunction%20getSelect%28%29%20%7B%0A%20%20%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20....%0A%20%20%20%20var%20selection%20%3D%20document.commandDispatcher.focusedWindow.getSelection%28%29%3B%0A%20%20%20%20var%20anchor%20%3D%20%28selection.anchorNode%20%21%3D%3D%20null%29%3F%20selection.anchorNode%3A%20false%3B%0A%0A%20%20%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%27PRE%27%20....%0A%20%20%20%20if%20%28%20anchor%20%26%26%20anchor.parentNode.tagName%20%3D%3D%20%27PRE%27%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20var%20node%20%3D%20selection.focusNode%3B%0A%20%20%20%20%20%20%20%20%20var%20startPos%20%3D%20selection.anchorOffset%3B%0A%20%20%20%20%20%20%20%20%20var%20endPos%20%3D%20selection.focusOffset%3B%0A%20%20%20%20%20%20%20%20%20var%20selection%20%3D%20node.data.substring%28startPos%2C%20endPos%29%3B%20%0A%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20//%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0442%u0435%u043A%u0441%u0442%u043E%u0432%u043E%u0433%u043E%20%u043F%u043E%u043B%u044F%20....%0A%20%20%20%20if%20%28%20selection.toString%28%29.length%20%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20var%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0A%20%20%20%20%20%20%20%20%20if%20%28%20theBox%20%26%26%20%28theBox.type%20%3D%3D%20%22text%22%20%7C%7C%20theBox.type%20%3D%3D%20%22textarea%22%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20startPos%20%3D%20theBox.selectionStart%3B%0A%09%20%20%20%20%20%20var%20endPos%20%3D%20theBox.selectionEnd%3B%0A%09%20%20%20%20%20%20var%20selection%20%3D%20theBox.value.substring%28startPos%2C%20endPos%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20//%20%u0438%u0441%u043F%u0440%u0430%u0432%u043B%u044F%u0435%u043C%20%u043F%u0440%u043E%u0431%u043B%u0435%u043C%u0443%20%u0441%20%u043F%u0435%u0440%u0435%u043D%u043E%u0441%u043E%u043C%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u043D%u043E%u0432%u0443%u044E%20%u0441%u0442%u0440%u043E%u043A%u0443%20%u0432%20%u0441%u0442%u0430%u043D%u0434%u0430%u0440%u0442%u043D%u043E%u043C%20win%20%u0431%u043B%u043E%u043A%u043D%u043E%u0442%u0435%20....%0A%20%20%20%20if%20%28%20selection.toString%28%29.length%20%21%3D%3D%200%20%29%20%7B%0A%20%20%20%20%20%20%20%20%20var%20selection%20%3D%20selection.toString%28%29%3B%0A%20%20%20%20%20%20%20%20%20var%20selection%20%3D%20selection.replace%28/%5Cu000A/g%2C%20%22%5Cu000D%5Cu000A%22%29%3B%0A%20%20%20%20%20%20%20%20%20var%20selection%20%3D%20selection.replace%28/%5Cu000D%5Cu000D%5Cu000A/g%2C%20%22%5Cu000D%5Cu000A%22%29%3B%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20return%20%28%20selection%20%3D%3D%20%27%27%29%3F%20false%3A%20selection%3B%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u043A%u043D%u043E%u043F%u043A%u0438%20................................%0Athis.tooltipText%20%3D%20%22Stf%22%20+%22%5Cn%22+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%u041B%3A%20%u0421%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u043B%u0438%20%u0432%u0435%u0441%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%u043A%u0430%u043A%20txt%20%u0444%u0430%u0439%u043B%22%20+%22%5Cn%22+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%u0414%u041B%3A%20%u0421%u043E%u0445%u0440%u0430%u043D%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u043B%u0438%20%u0432%u0435%u0441%u044C%20%u0442%u0435%u043A%u0441%u0442%20%u043D%u0430%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0435%20%u0431%u0435%u0437%20%u0437%u0430%u043F%u0440%u043E%u0441%u0430%20%u043D%u0430%20%u0441%u043E%u0445%u0440%u0430%u043D%u0435%u043D%u0438%u0435%22%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Л: Сохранить выделенный текст или весь текст на странице как txt файл
ДЛ: Сохранить выделенный текст или весь текст на странице без запроса на сохранение в последний созданный файл

bunda1 пишет

Есть другая кнопка которая делает то что ты просишь, Stf+:

Да, спасибо, почти то, что нужно, но есть некоторые минусы для меня: это еще одна кнопка плюсом к Save, отсутствие пункта в контекстном меню, текст вставляется без титла и урла, целевой файл не прописан жестко под даблклик, из всплывающего окна не открыть файл.
Методом научного тыка пытался сделать из двух этих кнопок одну, пытался отредактировать sft+ ... плачевный результат )
Может быть подскажите, что дописать в Save, чтоб появилась возможность из контекстного меню сохранять выделенный текст в файл (прописанный в коде) с указанием титла и урла после разделителя. Или вариант Sft+, где по одиночному - в новый файл с выбором места, а по двойному - дописывает в имеющийся файл + их открытие из информ. окна. Как вам проще.
Спасибо.

Uxapb пишет

● отказаться от Save Text to File
● чтобы файл сохранялся не на рабочий стол и каждый день новый, а дописывался уже имеющийся и находящийся на постоянке в определенном мной месте.

stf :: Add-ons for Firefox
6211711eae05a314dde4d29e0dd8aebd.png

Uxapb пишет

Save Text to File

Pony_Smile_Pack пишет

stf :: Add-ons for Firefox

Функционал схож. Но хотелось отказаться от аддона в пользу кнопки. Тем более, что разделение по вариантам сохранения при различных кликах юзабельнее.

Uxapb пишет

Методом научного тыка пытался сделать из двух этих кнопок одну, пытался отредактировать sft+ ... плачевный результат )
Может быть подскажите, что дописать в Save, чтоб появилась возможность из контекстного меню сохранять выделенный текст в файл (прописанный в коде) с указанием титла и урла после разделителя.

Ну тогда поменяй:

Выделить код

Код:

// путь к файлу и название файла....
     var file = directoryService.get("Desk", Components.interfaces.nsIFile); 
     file.append("Save - " + (new Date()).toLocaleFormat("%d.%m.%Y") + ".txt");

на:

Выделить код

Код:

// путь к файлу и название файла....
     var pathToFile = "C:\\qwerty";
     file.initWithPath( pathToFile + ".txt" );

1) В 25 [firefox] у меня не работает кнопка, которая открывает поиск текста на странице (Ctrl + F), вот её код:

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

Выделить код

Код:

var findToolbar = document.getElementById("FindToolbar");
if (typeof gFindBar == "object") { //Bon Echo 2.0a3
    if(findToolbar.hidden) {
        gFindBar.onFindCommand();;
        this.checked=true;
    } else {
        gFindBar.close();
        this.checked=false;
    } // End if (findToolbar.hidden)
} 
else {
    if(findToolbar.hidden){
        onFindCmd();
    } else {
        closeFindBar();
    } // End if (findToolbar.hidden)
} // End if (typeof gFindBar == "object")


Можете поправить её?

И ещё:
2) Как вернуть "старый" стиль этого поиска, т.е. в 25 [firefox] чтобы строка поиска была такая же, как в 24, 23 ... ?
3) Вот этот скрипт может ещё почините?

bunda1 пишет

Ну тогда поменяй:
......
на:
......

Спасибо большое, именно так и хотел.
Еще вопрос, а можно как-то снять ограничение на кол-во символов в заголовке страницы ?

Uxapb пишет

Еще вопрос, а можно как-то снять ограничение на кол-во символов в заголовке страницы ?

Если я правильно понял:
function getDocTitle() {
     var protocol = content.location.protocol;
     if ( ["about:", "chrome:", "jar:", "data:"].indexOf( protocol ) !== -1 ) return false; 
          var docTitle = content.document.title || content.document.domain || gBrowser.mCurrentTab.label;       
          // заменить недопустимые символы и удалить лишние пробелы
          var docTitle = docTitle.replace(/[:.\\\/<>?*|"]+/g, " ")
          var docTitle = docTitle.replace(/\s\s+/g, " ");

          return docTitle.substring(0, 50);
};

bunda1 пишет

Если я правильно понял:
return docTitle.substring(0, 50);

Да, именно это значение.  Еще раз спасибо, что не оставили без внимания мои маленькие прихоти. :)

1fesFFFF пишет

1) В 25 [firefox] у меня не работает кнопка, которая открывает поиск текста на странице (Ctrl + F), вот её код:

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

Выделить код

Код:

var findToolbar = document.getElementById("FindToolbar");
if (typeof gFindBar == "object") { //Bon Echo 2.0a3
    if(findToolbar.hidden) {
        gFindBar.onFindCommand();;
        this.checked=true;
    } else {
        gFindBar.close();
        this.checked=false;
    } // End if (findToolbar.hidden)
} 
else {
    if(findToolbar.hidden){
        onFindCmd();
    } else {
        closeFindBar();
    } // End if (findToolbar.hidden)
} // End if (typeof gFindBar == "object")


Можете поправить её?

Там старого findbar'а больше нет. Теперь для каждого таба свой.
Переключалка такая-же (вкладка Код)

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

Выделить код

Код:

gFindBar.hidden ? gFindBar.onFindCommand() : gFindBar.close();


Checked-индикация, если нужна,
то можешь попробовать вариант (вкладка Инициализация)
скрытый текст

Выделить код

Код:

const
    observer = new MutationObserver(check),
    optChildList = { childList: true },
    optAttributeHidden = { attributes: true, attributeFilter: ["hidden"] };

function check(mut) {
    const
        childList = mut && mut[0].type == "childList",
        findbar = 
            childList
            && mut[0].addedNodes.length
            && mut[0].addedNodes[0].nodeName == "findbar";

    if (childList && !findbar) return;
    childList && findbar && obs(true);
    self.checked = !gFindBar.hidden;
}
function obs(noCheck) {
    const
        tab = gBrowser.selectedTab,
        findbar = tab._findBar,
        node = findbar || tab.linkedBrowser.parentNode.parentNode,
        options = findbar ? optAttributeHidden : optChildList;

    observer.disconnect();
    observer.observe(node, options);
    if (noCheck != true) findbar ? check() : self.checked = false;
}
obs();
addEventListener("TabSelect", obs, false, gBrowser.tabContainer);
addDestructor(function() observer.disconnect());

Dumby
Спасибо

Кнопка запуска внешнего приложения

Выделить код

Код:

startProcess("C:\\Program Files (x86)\\SMPlayer\\smplayer.exe",["%u"]);

function startProcess(path, args) {
    var file = Components.classes["@mozilla.org/file/local;1"]
        .createInstance(Components.interfaces.nsILocalFile);
     file.initWithPath(path);
    if(file.exists()) {
       var process = Components.classes["@mozilla.org/process/util;1"]
              .createInstance(Components.interfaces.nsIProcess);
       process.init(file);
        process.run(false, args, args.length);
      } else custombuttons. alertBox ("Файл не найден", path); 
};

А как передать в аргументе текущий адрес страницы? Я пробовал %u, но не работает. Я хочу, чтобы на ютубе я нажал на кнопку и открылся SMPlayer с текущей страницей, например

Выделить код

Код:

C:\Program Files (x86)\SMPlayer\smplayer.exe http://www.youtube.com/watch?v=QJO3ROT-A4E

Dеnis

var url=getBrowser().currentURI.spec;
var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
file.initWithPath("C:\\Program Files\\VideoLAN\\VLC\\vlc.exe");
var process  = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
var args = [window.content.location.href];
process.init( file );
process.run( false, args, args.length );

есть рабочая кнопка для отключения плагинов? Вот я попробовал Toggle Java(Firefox) по ссылке https://forum.mozilla-russia.org/viewtopic.php?pid=573843#p573843 - НЕРАБОТАЕТ

by-psi-x пишет

есть рабочая кнопка для отключения плагинов? Вот я попробовал Toggle Java(Firefox) по ссылке https://forum.mozilla-russia.org/viewtopic.php?pid=573843#p573843 - НЕРАБОТАЕТ

Firefox 26 Бета | Форум Mozilla Россия

Все плагины, за исключением последних версий Flash, по умолчанию настроены на "Запуск по щелчку мышью"

bunda1
А можно в кнопке Переключить JavaScript изменить иконку? Цветом не слишком заметно состояние. Можно ли на отключенной организовать маленький красный крестик или просто как зачеркнутую крест-накрест изображать?

Все плагины, за исключением последних версий Flash, по умолчанию настроены на "Запуск по щелчку мышью"

т.е. кнопка отключения/включения плагинов больше работать не будет? Можно удалять?

dedmazai1870 пишет

bunda1
А можно в кнопке Переключить JavaScript изменить иконку? Цветом не слишком заметно состояние. Можно ли на отключенной организовать маленький красный крестик или просто как зачеркнутую крест-накрест изображать?

А какую нужно?

dedmazai1870 пишет

А можно в кнопке Переключить JavaScript изменить иконку? Цветом не слишком заметно состояние.

предлагай =) http://www.iconsearch.ru/

okkamas_knife
Да но сейчас код в кнопке максимально минимален и красив, то есть идеальный.

06-11-2013 00:17:33
Можно легко переделать для переключения любой настройки - поменять иконку, название кнопки и настройку.

feas пишет

предлагай

JavaScript включён
JavaScript выключен
Это примерно, можно и другие. Честно утащил отсюда со 2-ой и 3-ей страницы.

dedmazai1870
Зачем огород то городить, вставьте более яркую иконку и будет прекрасно видно состояние кнопки, включены скрипты или нет, куда уж наглядней.
34f3ddf78574t.jpg 75d8899cdb08t.jpg

villa7
Я бы не городил огород, если Вы или кто-то другой объяснили мне, как такую иконку сделать или добавить пару своих изображений в эту кнопку. Одно изображение я понимаю как, а 2 не умею.
UPD. Если это одно изображение, то опять же какой формат: 32x16 или 16x32? Зачем мне экспериментировать, если ответ у Вас в подписи? :)

dedmazai1870
Качаете любую понравившуюся иконку, подходящую по размерам или в Paint.NET измените размер, цвет, какой нужно. ПКМ по кнопке Редактировать и вставляете иконку.
dc31d0476d09t.jpg

Как меня ломало писать длинный пост!:) Видимо, без этого не обойтись.
Как вставить/заменить иконку в кнопке я знаю, Paint.NET использую давно, IcoFX Portable тоже знаю, но не пользуюсь, потому как есть друг, который нарисует лучше меня. :)
Мне непонятно другое: каким образом иконка меняет свой цвет? Может это указано в коде кнопки? Но я там ничего не понимаю. Вот я и подумал, что может быть там прописано две иконки, которые выбираются в зависимости от события?
Как пример, использую дополнение Speed Dial. Захотелось мне изменить в нём иконку таба и значок: mdaf.jpg на свои. DOM Inspector подсказал, но значок оказался таким: 4p5o.png (32x64), поэтому взял "домик" 35v7.png (16x16) и просто клонировал xzr8.png
Отсюда и возникли вопросы, которые выделил bold'ом. Если бы умел делать обратную конвертацию из base64 в png смог бы сам посмотреть иконку, но я этого не умею.

P.S. А в Speed Dial теперь так (гифка примерно 30 сек.).
rqo.gif

P.S. Сейчас нашёл Online Base64 Image Encoder/Decoder. Вижу, иконка одна. Вопросы остаются: как она меняет свой цвет в кнопке?

okkamas_knife
Спасибо. Смотрел код, по названию "toggleImage" так и предполагал и в силу своей глупости и "серости" пытался изменить greyscale на greenscale, но кнопка не позеленела, а вообще с панели пропала. :D Значит, оставляю всё как есть, т.к. код самостоятельно изменить не смогу. Или попробую по совету villa7 заменить с более ярким цветом, чтобы отличия были виднее.
Всем участникам спасибо за помощь и объяснения.

dedmazai1870 пишет
feas пишет

предлагай

JavaScript включён
JavaScript выключен
Это примерно, можно и другие.

Замени в кнопке:

Выделить код

Код:

function toggleImage() {   
   self.style.filter = pref.value ? '' : 'url("chrome://mozapps/skin/extensions/extensions.svg#greyscale")';   
};

на:

Выделить код

Код:

function toggleImage() { 
   var icon = self.ownerDocument.getAnonymousElementByAttribute( self, "class", "toolbarbutton-icon");
   icon.src = pref.value
   ? 'data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAACQWzEUkFsxhJBbMaOQWzG2kFsxyZBbMdqQWzHrkFsx+pVhOf+GckP/TodG/zqIQP8+fDX4VHEyYf///wD///8AlF8zaLiQbf/WuqP/38az/+fUw//u39P/9eri//v07/+hyab/aLJ4/4PHk/9+wJf/gMSR/1ajY/orgDKG////AJlkNonHpIX////////////////////////+/P/a6Nj/crqC/4/Qnf8/plz/9PT0/0+5ev+Ky5v/V6Vl9yqAMjmeaTlXnmk59rSFWf/ZpXv/2J5v/9ebav/YlmP/dqdw/4nPlv9zx4P/RK9g//Hx8f/y8vL/Trl6/4DFkv8vhTjPpG88FKRvPKvVroz//fDl//fHov/3z63/+dW1/2yxfv+X16H/fMuI/2K/fv/z8/P/8fHx//X19f9OqmX/Nok/9v///wCqdUAot4ZW//7+/f/63sL/+ty///nbwP+HvI7/qd6z/47SmP9sunz/+fn5//b29v9ivoX/hsuV/zyOR8////8AsXtDHrmGUv/+/Pn/+dy///jbv//43MD/29O1/6HTrv+95cP/dryB//////+Lxpf/mdak/2i0ePdBkk45////ALeCRwm5hUv//vv3//ncwf/43L//+Ny///jbwP+yyqP/p9Wx/7vkw/+t1LL/p92x/32+iP9Qnl+G////AP///wD///8AvYhL+fz28P/538f/+dy9//rcv//628H/+t3D/9zVtf+IvZD/b7SC/4C8j/+rlFr/vYhLD////wD///8A////AMSOTtr159j/+uXS//navP/527z/+tu///rdwf/63cH/+d3E//vhyP///fv/yJRX/8SOThL///8A////AP///wDKlFK78NnB//vt4f/52sD/+dzC//nexf/64Mf/+uLK//rizf/65dD///79/8uPWv/KlFLxypRSRf///wD///8A0JpVpO3Qsv//9vD/+uHK//vjzP/749D/++bT//vp1f/86dj//Orb/////f/SnXH/7tnB/9CaVeX///8A////ANWfWJLryqX///37//3p1f/969j//erb//3t3//98OL//fHk//zw5P//////4KBw///7+f/fuIf/////AP///wDapFuE68aa///////87+L//fDn//3x6//99e7//fjx//369////Pr///////779//02sD/2qRb6v///wD///8A3qhdberAjP///////////////////////fn0//vz6v/469n/+ObT//Xfxv/py6b/3qhd7d6oXV3///8A////AOKsXzbirF/G6ryB/+i3d//msm3/5LBo/+KsX/DirF/j4qxfz+KsX8zirF+74qxfqOKsX0virF8FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==' 
   : 'data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAACQWzEUkFsxhJBbMaOQWzG2kFsxyZBbMdqQWzHrkFsx+pVhOf+aaUH/ZGaG/xhNrv8FQrv/B0a16QNFuHr///8AlF8zaLiQbf/WuqP/38az/+fUw//u39P/9eri//v07//9+vb/jKrg/yhmyf8hd+b/BXnq/wFk3f8ETb38A0W4eplkNonHpIX////////////////////////+/P/++/f//vfx/x9Yv/9jnfT/GH///wB2+P8Adu7/A2jh/wNFueSeaTlXnmk59rSFWf/ZpXv/2J5v/9ebav/YlmP/1pJd/9SPWf8FQrz/rs3+/////////////////xh/7/8EQrz+pG88FKRvPKvVroz//fDl//fHov/3z63/+dW1//javf/43sL/JFm7/4219v9Nkv//EXf//yGG//9Aiuv/A0S53v///wCqdUAot4ZW//7+/f/63sL/+ty///nbwP/528D/+d3B/5Odwv89ddH/jbX3/7jW/v9yqPX/LWvL/ARDum3///8AsXtDHrmGUv/+/Pn/+dy///jbv//43MD/+dvC//ncwf/53cL/kp7D/ypfwv8FQ7z/FUut/ANFuXj///8A////ALeCRwm5hUv//vv3//ncwf/43L//+Ny///jbwP/53cD/+d3A//ndw//74sv//Pn1/7eCR/u3gkcB////AP///wD///8AvYhL+fz28P/538f/+dy9//rcv//628H/+t3D//rdwv/53cT/++DJ///8+v/BjVP/vYhLD////wD///8A////AMSOTtr159j/+uXS//navP/527z/+tu///rdwf/63cH/+d3E//vhyP///fv/yJRX/8SOThL///8A////AP///wDKlFK78NnB//vt4f/52sD/+dzC//nexf/64Mf/+uLK//rizf/65dD///79/8uPWv/KlFLxypRSRf///wD///8A0JpVpO3Qsv//9vD/+uHK//vjzP/749D/++bT//vp1f/86dj//Orb/////f/SnXH/7tnB/9CaVeX///8A////ANWfWJLryqX///37//3p1f/969j//erb//3t3//98OL//fHk//zw5P//////4KBw///7+f/fuIf/////AP///wDapFuE68aa///////87+L//fDn//3x6//99e7//fjx//369////Pr///////779//02sD/2qRb6v///wD///8A3qhdberAjP///////////////////////fn0//vz6v/469n/+ObT//Xfxv/py6b/3qhd7d6oXV3///8A////AOKsXzbirF/G6ryB/+i3d//msm3/5LBo/+KsX/DirF/j4qxfz+KsX8zirF+74qxfqOKsX0virF8FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==';
};

okkamas_knife
bunda1
Большое спасибо!

Чёто в новой ночнушке с австралисом кнопки с панели навигации не пашут. Уже возникал этот вопрос: №231, тогда помогло решение от Dumby:

Выделить код

Код:

var sel = '#nav-bar-customizationtarget > toolbarbutton[id^="custombuttons-button"]:not([initialized])';
Array.forEach(document.querySelectorAll(sel), btn => { try { btn.init() } catch(ex) {} });

но теперь не помогает. :sick: Можно пофиксить? А то обидно, почти всё что нужно восстановил, и панель дополнений тоже есть :), а с этим незадача.

p.s. Некоторые кнопки с меню (Открыть в нижней панели и Extensions Options Menu) и с других панелей не работают. Пока австралис не приземлили - работали (и в UX 24 работают).а нет, тут ложная тревога, заработали после перезапуска. :)

upd. Вопрос решён. Ступил, не разглядел с утра, что #nav-bar-customizationtarget теперь #nav-bar-customization-target :dumb:
Поменял это в коде, теперь всё нормально.

Пользуюсь букмарклетом Upload To

скрытый текст
javascript:(function(){var%20c='ujs_max_upload',w=window,d=(w.document.body%20instanceof%20HTMLFrameSetElement%3Fw.frames[0]:w).document,e=d.getElementById(c);if(e){e.del();return};e=d.createElement('div');e.id=c;e.setAttribute('style','display:none;position:fixed;right:0;bottom:0;width:auto;height:auto;border:1px%20solid%20%23555;padding:10px;text-align:left;z-index:99999;background-color:%23EEE;background:-o-skin(%5Cx22Window%20Skin%5Cx22);');e.add=function(lnk,frm){var%20d=this.ownerDocument,a=d.createElement('a');a.href=lnk.href;a.target='_blank';a.setAttribute('style','padding:0;margin:0;border:none;text-decoration:none;color:%2300C;font:14px%20Times%20New%20Roman;');a.appendChild(d.createTextNode(lnk.text));this.appendChild(a);var%20f=d.createElement('form');f.action=lnk.action;f.method='post';f.enctype='multipart/form-data';f.target='_blank';f.setAttribute('style','display:block;margin:5px;');var%20t=d.createElement('input');t.type='file';t.name=lnk.name;t.setAttribute('style','width:auto;height:auto;padding:1px;margin:0;border-color:%23AAA;font:12px%20Arial;');t.onchange=function(){this.nextSibling.disabled=!this.value};f.appendChild(t);var%20s=d.createElement('input');s.type='submit';s.value='Upload';s.disabled=true;s.setAttribute('style','width:auto;height:auto;padding:1px%204px;margin:0%200%200%202px;color:buttontext;font:12px%20Arial;');f.appendChild(s);if(frm)for(var%20name%20in%20frm){var%20h=d.createElement('input');h.type='hidden';h.name=name;h.value=frm[name];f.appendChild(h)};this.appendChild(f)};e.vis=function(v){this.style.display=v%3F'block':'none';return%20this.offsetHeight*this.offsetWidth};e.del=function(){this.vis(false);this.parentNode.removeChild(this)};var%20b=d.createElement('div');b.title='Close';b.setAttribute('style','display:block;float:right;height:18px;width:18px;padding:0;margin:-5px;border:none;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAQAAAD8x0bcAAAAZElEQVR42mNgGNyAGQixsVGU/AdCXjCbHczmxKaMFywlAlWiw6DAwIZNmQhYGqJEDWoqFiAGVmKKTwk73CRJ/Ep0GIyhbsPpO4hbIG4TwKaMk0EZ7hYBBk1cvmNDEmbDrmSwAADE8h10+qICXwAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAASUVORK5CYII=");background:-o-skin(%5Cx22Caption%20Close%20Button%20Skin%5Cx22);cursor:pointer');b.onclick=function(){this.parentNode.del()};e.appendChild(b);e.add({href:'http://www.imageshack.us',text:'Imageshack.us',action:'http://post.imageshack.us/',name:'fileupload'},{MAX_FILE_SIZE:'1048576',key:'07AHPRSUb540e13d31461ec4d69d5fc122bd5ab7'});e.add({href:'http://www.radikal.cc',text:'%D0%A0%D0%B0%D0%B4%D0%B8%D0%BA%D0%B0%D0%BB-%D0%A4%D0%BE%D1%82%D0%BE',action:'http://www.radikal.cc/action.aspx',name:'F'},{upload:'yes',VM:'180'});e.add({href:'http://fastpic.ru',text:'FastPic.ru',action:'http://fastpic.ru/uploadmulti',name:'file[]'},{uploading:'1'});e.add({href:'http://multi-up.com',text:'Multi-up.com',action:'http://multi-up.com/up.php',name:'upload'});e.add({href:'http://zalil.ru',text:'Zalil.ru',action:'http://zalil.ru/upload/',name:'file'});e.add({href:'http://rghost.ru/',text:'Rghost.ru',action:'http://kaon.rghost.ru/files',name:'file'},{'data-max-file-size':'52428800'});d.documentElement.appendChild(e);e.vis(true)})();

Пытался сделать из него кнопку по принципу loadURI("") - не работает. Подскажите что нужно изменить. (В программирование я не 0, а -1, чем проще тем лучше.)

adidharma пишет

и панель дополнений тоже есть :) .

  А подробнее можно? 
Всё увидел №12067 :)

Mishania пишет

Пользуюсь букмарклетом Upload To

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

Пытался сделать из него кнопку по принципу loadURI("") - не работает. Подскажите что нужно изменить. (В программирование я не 0, а -1, чем проще тем лучше.)

Mishania,
1) Присвойте своему букмарклету keyword
2) Положите в кнопку в секцию инициализации этот код:

Выделить код

Код:

this.onclick=function(e) {
if (e.button==0) {
    var url = PlacesUtils.getURLAndPostDataForKeyword(' вставить свой keyword ')[0];
    loadURI(url);
    } 
}

Чайник
Про инициализацию я знаю, а keyword это как?

Mishania пишет

Чайник
Про инициализацию я знаю, а keyword это как?

Keyword - это краткое имя. Вот это
e090403bccacd83f37dff62311419f44.png

Выбрать краткое имя можно любое и вписать его в скобки в коде.

Чайник
Спасибо!

Что-то у меня на 24.0 совсем не работает кнопка Переключаться на новые вкладки/Открывать новые вкладке в фоне.(Firefox)
Новые вкладки открываются всегда активными, не в фоне. Хотя значок кнопки меняет свой вид при смене режима.

rubel пишет

Что-то у меня на 24.0 совсем не работает кнопка Переключаться на новые вкладки/Открывать новые вкладке в фоне.(Firefox)
Новые вкладки открываются всегда активными, не в фоне. Хотя значок кнопки меняет свой вид при смене режима.

Это есть в настройках.
87dab2dd2e6451785641953945ead476.png

Pony_Smile_Pack пишет

Это есть в настройках.

У меня эта птичка не стоит. Проверил и на 17.0 с одним расщирением-open_link_in_new_tab , тоже не работает, может какие настройки нужны. Хочется чтоб все ссылки открывались в фоне в новых вкладках.

Нужна кнопка или скрипт, который автоматически при запуске браузера или открытии любого сайта сбрасывает масштаб страницы на стандартные 100%.

1fesFFFF
В about:config browser.zoom.siteSpecific - fasl попробуйте.

1fesFFFF пишет

Нужна кнопка или скрипт, который автоматически при запуске браузера или открытии любого сайта сбрасывает масштаб страницы на стандартные 100%.

Изменить масштаб

всем привет, а есть ли кнопочки на подобее тех которые имеются в MRTechToolkit{6.0.4.9000}, список тем и расширением(клик и открываются настройки расширения). или выключение всех расширений. вообщем все которые имеются в MRTechToolkit.
спасибо.

mahtanoronra
Extension List
Toggle Restartless Add-ons

15-12-2013 20:55:50
Add-ons Manager

15-12-2013 20:56:18
Extensions Options Menu

15-12-2013 20:56:38
Extension List Generator

15-12-2013 20:57:08
Check for Addons Updates

15-12-2013 20:59:05
Custom Buttons • View topic - View Page Extension

15-12-2013 21:02:05
10-11-2013 20:53:17

15-12-2013 21:02:47
Custom Buttons • View topic - Extensions Options Menu

15-12-2013 21:06:48
Lightweight Theme Switcher

bunda1
1 имеется
спасибо а в Toggle Restartless Add-ons можно сразу все выключать разом?и почему то там не все расширения имеются в списке( Extensions Options Menu тоже список всего из 6 расширений) :)

mahtanoronra пишет

bunda1
1 имеется
спасибо а в Toggle Restartless Add-ons можно сразу все выключать разом?

Сразу нельзя и наверно кнопка показывает только Restartless расширения.

Я пользуюсь кнопкой Открывать всё в новых вкладках.
Но пункт контекстного меню адресной строки "Вставить и перейти" открывает адрес из буфера в текущей вкладке. А хотелось бы в новой.

Может можно что добавить в код кнопки?
Или "Вставить и перейти" + какая-то клавиша чтоб открывала новую вкладку.


И насчёт кнопки Proxy. Мне не нужен полностью её функционал, а нужна та часть, которая позволяет установить адрес/порт прокси из выделенного текста. Какой кусок кода нужно взять?

rbfyec пишет

И насчёт кнопки Proxy. Мне не нужен полностью её функционал, а нужна та часть, которая позволяет установить адрес/порт прокси из выделенного текста. Какой кусок кода нужно взять?

Выделить код

Код:

// Создаем меню для добавление прокси в контекстном меню выделенного текста на странице ................................
(function func() {
  var contextMenu = document.getElementById("contentAreaContextMenu");  
  
  // создать новый пункт меню
  var menuitem = document.createElement("menuitem");      
  menuitem.setAttribute("label", "Добавить прокси"); 
  menuitem.setAttribute("class", "menuitem-iconic");
  menuitem.setAttribute("image", "data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAAYOQAAWJ2kADh1fAAAEKAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAEEJBE4ULQ+fZ38ea/H/muhuv8gW3ztAxclewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLNlO7PH+n/3Sgu/281eP9zuHr/mWZuP4XXon/ABAeZwAAAAAAAAAAAQEBAQAAAAAZGBoTKScsLyYkKjErJSgnIC8/XgZQgP9BcZb8b5q3/oiux/+qx9r/a5Ow+zFtlv8PRWrGAAACAAEBAQMHBwcbAAAAD2BeYn769/3/4eDm/Onh5v+DnrX/A0t9/j1vlv+FqMH/lrfN/7rS4f9+pL3+M26X/xJYhu0DEiMdAAAAAAEBAQEAAAABBgUGEaSiprbPzNP239fb/4OcsP4aXYr/RHOZ/5Gwx//T5e//mrjO/3KYtv40apP/D0x77AUTIhwhHyMmeXV7mXt4fqJ3dHmce3d+n6eirODMx8r/o6q3/kN4nf92m7n/vtPj/9Hg7P/C1OL/eJq1+jtulv8bSnC7AAEGAF1aYH7//////f39/P//////////////////////////lbHC/3ilvf/K4Oz/2OXv/7nN3f6FqcP/VIiv/AseMT8AAAAAXFtef+LY5/+AT534fU2d+4VXovyKXaf+jGGp/5BlrP+GWKT/ZmGc/4Cduf+ivtD+k7HH/1t/neUTJjhFAAAAAAEBAQJfXmB/3tHl/14giPxcIYr/Zy+S/244mP9yPZv/cj6c/3M9nP9wNpf/YDSP/1k0ivu7tdP/YmNmiAAAAAAEBAQGAAAAAF9eYIDg1Ob/cDqV/HE9mv9/TaT/hler/4tdr/+NXrD/iFms/4JTqP9+SqP/cjqW+9zJ4/9ubW6JAAAAAAMDBAQAAAAAX15ggODU5v94RZz8e0mi/4pcrv+Vabf/nXO9/6J5wf+jfMH/oXq//513u/+NY6z718bh/2pqa4gAAAAABAMEBAAAAABfXWCA4NTm/4VWpfyPY7L/onvA/7GPzP+8ndT/waTY/8Cj1/+6nNL/tZfO/6F9uvvYx+L/ampriAAAAAAEAwQEAAAAAF9eYH/e0uX/n3u5/LKTzP/Bpdf/zrbh/9jC6f/bxuv/2cTp/9O+5P/Qu+H/uJ3L+9jI4f9qaWuHAAAAAAQDBAQAAAAAX15gf97S5P+gfbf5sZPH/LqdzfzCqNT8ybHZ/My12vzKs9n8xq/W/Mav1fywksL418fh/2tqbIkAAAAABAMEBAAAAABZVlt3+fX8/+DU5vzj1un/5tvt/+ne7//r4PH/6t7w/+fb7f/k2Ov/4dPn/9nM4Pv79v//ZGFnfwAAAAADAwQEAAAAABcVGRpZVlt6YF9hgWBgYoBhYWKAYmFigGJiY4BiYmOAYmFigGFhYoBgYGGAX15ggF1aX4AbGR0eAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=");
  addEventListener("command", function(e) { addNewProxy() }, false, menuitem );
  
  // устанавливаем где показывать пункт меню 
  addEventListener("popupshowing", function() {
     menuitem.hidden = !gContextMenu.isContentSelected;
  }, false, contextMenu );
  addDestructor(function() { contextMenu.removeChild( menuitem ) });
  contextMenu.appendChild( menuitem ); // как последний пункт меню
  
  
  // добавление прокси
  function addNewProxy( sel, i ) {  
     var selection = document.commandDispatcher.focusedWindow.getSelection().toString();
     var sel = ( sel == undefined ) ? selection : sel.toString();
     sel = sel.replace(/^\s+|\s+$/g, ""); // удалить пробелы, слева и справа от строки
     sel = sel.replace(/\s+/g,":"); // заменить пробелы внутри строки
     
     // если порт ...
     if ( sel.length < 5 && isFinite(sel) ) {  
          sel = sel.replace(/:/g, "");
          sel = +sel;  // порт как число
          var lab = 'порт';
          var pref = 'network.proxy.http_port';
          }
     
     // если адрес ...
     if ( sel.length > 4 && !/:/.test(sel) && sel.split(".").length == 4 ) {  
          var lab = 'адрес';
          var pref = 'network.proxy.http';
          }     
     
     // если адрес и порт ...    
     if ( sel.length > 4 && /:/.test(sel) && sel.split(":").length == 2 && sel.split(".").length == 4 ) {
          var lab = 'адрес и порт';
          var array = sel.split(":");  
          array.forEach(function(sel, i) { addNewProxy( sel, i ) });          
          }     
     
     Application.prefs.setValue( pref, sel ); // переключить настройки прокси     

     if ( lab == undefined || i !== undefined || i == 0 ) return;
     
     // всплывающая подсказка рядом с выделенным текстом ...     
     function showTooltip() {
        var tooltip = gBrowser.appendChild( document.createElement("tooltip") );
        tooltip.style.cssText = "color: red !important; font-weight: bold !important; font-size: 14px !important; -moz-box-orient: horizontal; text-align: center;";
   
        var image = tooltip.appendChild( document.createElement("image") );
        image.setAttribute("src", self.image );
   
        var label = tooltip.appendChild( document.createElement("label") );
        label.setAttribute("value", "Установлен " + lab + " прокси: " + sel );
    
        var focused = document.commandDispatcher.focusedWindow;
        var selection = focused.getSelection().getRangeAt(0).getBoundingClientRect();
        var posX = focused.mozInnerScreenX + selection.left;
        var posY = focused.mozInnerScreenY + selection.bottom - 5;   

        tooltip.showPopup( gBrowser, posX, posY );
        setTimeout(function() { gBrowser.removeChild( tooltip ) }, 2000 );
     };
     showTooltip();    
  };
   
})();
rbfyec пишет

Я пользуюсь кнопкой Открывать всё в новых вкладках.
Но пункт контекстного меню адресной строки "Вставить и перейти" открывает адрес из буфера в текущей вкладке. А хотелось бы в новой.
Может можно что добавить в код кнопки?

Добавить:

Выделить код

Код:

addEventListener("popupshowing", function(e) {
   var menupopup = e.originalTarget;
   var pasteAndGo = menupopup.getElementsByAttribute("anonid", "paste-and-go")[0];
   pasteAndGo.setAttribute("oncommand", "event.preventDefault(); gURLBar.select(); goDoCommand('cmd_paste'); gURLBar.handleCommand(event);")
}, false, document.getElementById("urlbar") );
bunda1 пишет

Добавить:

Выделить код

Код:

addEventListener("popupshowing", function(e) {
   var menupopup = e.originalTarget;
   var pasteAndGo = menupopup.getElementsByAttribute("anonid", "paste-and-go")[0];
   pasteAndGo.setAttribute("oncommand", "event.preventDefault(); gURLBar.select(); goDoCommand('cmd_paste'); gURLBar.handleCommand(event);")
}, false, document.getElementById("urlbar") );

Это я добавил, оно работает, благодарю.

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

В консоли ошибок нет.

rbfyec пишет

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

В консоли ошибок нет.

rbfyec
Я проверил и всё работает и кнопка не должна сама исчезать при перезапуске браузера.
Тут что то не понятное или ты что то не делаешь.

bunda1
Да, сейчас кнопка работает. А почему вчера не работало - понять не могу.
Спасибо!! :music:

А как сделать, чтоб кнопка меняла иконку от состояния прокси, неважно включаю я прокси хоткеем, кнопкой или жестом?

rbfyec пишет

А как сделать, чтоб кнопка меняла иконку от состояния прокси, неважно включаю я прокси хоткеем, кнопкой или жестом?

Выделить код

Код:

// Установливать нужную иконку кнопки при старте баузера или при изменениях в 'about:config' ................................
var  s = "network.proxy.type";
function toggleImage() {
    var icon = self.ownerDocument.getAnonymousElementByAttribute( self, "class", "toolbarbutton-icon");
    icon.src = ( cbu.getPrefs(s) == 0 )
    ? self.image
    : 'data:image/x-icon;base64,AAABAAEAEREAAAEAIADwBAAAFgAAACgAAAARAAAAIgAAAAEAIAAAAAAAyAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAQAAAAAIAA4GQAAnFmkAHQ5fAAQAKAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAEBAQECAgICAgICAgICAgMBAQEAAAQBJBFQOLQ+nX38ecev/mu6of8gfFvtAyUXewAAAAsAAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEBAAAAAAMLUza7PKd//3S7oP2849X9zuvh/mW4mf4XiV7/AB4QZwAAAAAAAAAAAQEBAQAAAAAZGhgTKSwnLyYqJDErKCUnID8vXgaAUP9BlnH8b7ea/ojHrv+q2sf/a7CT+zGWbf8PakXGAAIAAAEBAQMHBwcbAAAAD2BiXn76/ff/4ebg/Onm4f+DtZ7/A31L/j2Wb/+Fwaj/ls23/7rh0v9+vaT+M5du/xKGWO0DIxIdAAAAAAEBAQEAAAABBgYFEaSmorbP08z239vX/4OwnP4ail3/RJlz/5HHsP/T7+X/ms64/3K2mP40k2r/D3tM7AUiExwhIx8meXt1mXt+eKJ3eXSce353n6esouDMysf/o7eq/kOdeP92uZv/vuPT/9Hs4P/C4tT/eLWa+juWbv8bcEq7AAYBAF1gWn7//////f39/P//////////////////////////lcKx/3i9pf/K7OD/2O/l/7ndzf6Fw6n/VK+I/AsxHj8AAAAAXF5bf+Ln2P+AnU/4fZ1N+4WiV/yKp13+jKlh/5CsZf+GpFj/Zpxh/4C5nf+i0L7+k8ex/1udf+UTOCZFAAAAAAEBAQJfYF5/3uXR/16IIPxciiH/Z5Iv/26YOP9ymz3/cpw+/3OcPf9wlzb/YI80/1mKNPu707X/YmZjiAAAAAAEBAQGAAAAAF9gXoDg5tT/cJU6/HGaPf9/pE3/hqtX/4uvXf+NsF7/iKxZ/4KoU/9+o0r/cpY6+9zjyf9ubm2JAAAAAAMEAwQAAAAAX2BegODm1P94nEX8e6JJ/4quXP+Vt2n/nb1z/6LBef+jwXz/ob96/527d/+NrGP71+HG/2praogAAAAABAQDBAAAAABfYF2A4ObU/4WlVvyPsmP/osB7/7HMj/+81J3/wdik/8DXo/+60pz/tc6X/6G6ffvY4sf/amtqiAAAAAAEBAMEAAAAAF9gXn/e5dL/n7l7/LLMk//B16X/zuG2/9jpwv/b68b/2enE/9Pkvv/Q4bv/uMud+9jhyP9qa2mHAAAAAAQEAwQAAAAAX2Bef97k0v+gt335sceT/LrNnfzC1Kj8ydmx/MzatfzK2bP8xtav/MbVr/ywwpL41+HH/2tsaokAAAAABAQDBAAAAABZW1Z3+fz1/+Dm1Pzj6db/5u3b/+nv3v/r8eD/6vDe/+ft2//k69j/4efT/9ngzPv7//b/ZGdhfwAAAAADBAMEAAAAABcZFRpZW1Z6YGFfgWBiYIBhYmGAYmJhgGJjYoBiY2KAYmJhgGFiYYBgYWCAX2BegF1fWoAbHRkeAAAAAAEBAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=';
};  
toggleImage();
gPrefService.addObserver( s, toggleImage, false );
addDestructor(function() { gPrefService.removeObserver( s, toggleImage, false ) });

Иконка есть! :)


А вот одна вещь у меня не получается.

Допустим прописан у меня в настройках какой-то прокси. Потом я через контекстное меню (или в диалоге) меняю адрес/порт.
А через время я хочу вернуться (нажатием кнопки) на тот, первый прокси. Его изначальные настройки я записываю в переменные

Выделить код

Код:

addr = Application.prefs.getValue("network.proxy.http", 0); 
prt = Application.prefs.getValue("network.proxy.http_port", 0)

И хочу использовать их  для возврата на первый прокси. Но когда я меняю через контекстное меню адрес/порт -  addr и prt   перезаписываются.
Я менял место объявления эти переменных, всё равно не получается, не могу сохранить первоначальные значения, хоть бери в блокнот записывай. (Область видимости?)

Хочу уточнить: первый прокси - это не какойто фиксированный адрес, а просто тот, который был ДО изменения настроек.

rbfyec
Не много непонятно но кажется ты хочешь менять прокси через меню и потом нажатием кнопки возвращать первоначальное значение. Самое простое решение, в код кнопки:

Выделить код

Код:

Application.prefs.setValue('network.proxy.http', '119.82.240.185' );                 
Application.prefs.setValue('network.proxy.http_port', 8080 );

Порт и адрес ставь свой.

bunda1 пишет

Не много непонятно но кажется ты хочешь менять прокси через меню и потом нажатием кнопки возвращать первоначальное значение

Выделить код

Код:

Application.prefs.setValue('network.proxy.http', '119.82.240.185' );                 
Application.prefs.setValue('network.proxy.http_port', 8080 );

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

То что предлагает okkamas_knife вроде подходит, но...
Я создал в about:config параметры custombuttons.button.proxy.proxybakup (строка) и custombuttons.button.proxy.portbakup (целое). В сниппетах есть код

Выделить код

Код:

//установить значение параметра в about:config (средствами CB)
var n="browser.download.dir";//параметр
var z="C:\Documents and Settings\Администратор\Рабочий стол";//значение, для булевых ставим 0-false 1-true
custombuttons.setPrefs(n,z);

И вот в коде кнопки я нашёл место, где добавляется прокси и написал

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

Выделить код

Код:

// добавление прокси
  function addNewProxy( sel, i ) {  
     var selection = document.commandDispatcher.focusedWindow.getSelection().toString();
     var sel = ( sel == undefined ) ? selection : sel.toString();
     sel = sel.replace(/^\s+|\s+$/g, ""); // удалить пробелы, слева и справа от строки
     sel = sel.replace(/\s+/g,":"); // заменить пробелы внутри строки
     
     // если порт ...
     if ( sel.length < 5 && isFinite(sel) ) {  
          sel = sel.replace(/:/g, "");
          sel = +sel;  // порт как число
          var lab = 'порт';
          var pref = 'network.proxy.http_port';
          }
     
     // если адрес ...
     if ( sel.length > 4 && !/:/.test(sel) && sel.split(".").length == 4 ) {  
          var lab = 'адрес';
          var pref = 'network.proxy.http';
          }     
    
     // если адрес и порт ...    
     if ( sel.length > 4 && /:/.test(sel) && sel.split(":").length == 2 && sel.split(".").length == 4 ) {
          var lab = 'адрес и порт';
          var array = sel.split(":");  
          array.forEach(function(sel, i) { addNewProxy( sel, i ) });          
          }     
     
      Application.prefs.setValue( pref, sel ); // переключить настройки прокси
 
      
 //****************   Это я добавил   *************************************  
  
       proxybakup =  custombuttons.setPrefs("custombuttons.button.proxy.proxybakup", pref); 
       portbakup = custombuttons.setPrefs("custombuttons.button.proxy.portbakup", sel);


Это не работает. В консоли

Ошибка: NS_ERROR_UNEXPECTED: Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIPrefBranch.setCharPref]
Источник: chrome://custombuttons/content/overlay.js
Строка: 914

Надо заменить:

Выделить код

Код:

addEventListener("command", function(e) { addNewProxy() }, false, menuitem );

на:

Выделить код

Код:

addEventListener("command", function(e) {
     // сохранить старые настройки прокси ....
     Application.prefs.setValue('CB.button.proxy.portbakup', cbu.getPrefs("network.proxy.http_port") );
     Application.prefs.setValue('CB.button.proxy.proxybakup', cbu.getPrefs("network.proxy.http") );   
  
     addNewProxy();
}, false, menuitem );

Я напутал в коде, потому и не выходило :dumb:

bunda1 пишет

Надо заменить:
..............

на:
.............

Вот это получилось то самое что я и хотел!
bunda1,
ПОЛНЫЙ РЕСПЕКТ! :rock:

А просто интересно, это вообще-то возможно: присвоить переменной значение какого-то параметра about:config  и сохранить эту переменную неизменной когда этот параметр меняется?

rbfyec пишет

А просто интересно, это вообще-то возможно: присвоить переменной значение - адрес прокси и сохранить эту переменную неизменной когда адрес меняется?

Можно конечно но только до закрытия браузера и наверно :/ до настройки панелей или редактирования кнопки.

rbfyec
В prefs.js всё сохраняется, создавайте себе там что и сколько угодно.

bunda1
Здравствуйте. При переходе на 26 [firefox] перестал работать скрипт conqueryModoki4.uc.xul.
Версия с  github тоже не работает.

Вот ссылки на мой скрипт:

скрытый текст
http://multi-up.com/934591
или
http://files.mail.ru/79D0D2B0E8C149D38E06CD91105C46EA

Можете его починить?

Данный скрипт - это Context Search. Преимущество его для меня в том, что он идёт отдельной строкой в контекстном меню и после поиска через него, не меняет поисковик из строки поиска.

Как сделать listener чтобы он следил за появлением окна с определённым адресом (или с определённым заголовком) и тогда выполнится действие?

toxa пишет

Как сделать listener чтобы он следил за появлением окна с определённым адресом (или с определённым заголовком) и тогда выполнится действие?

Вот пример:

Выделить код

Код:

// Обработчик следит за переключением табов и запускают нужные коды и функции ................................
addEventListener("TabAttrModified", function(e) { 
   
   var tab = e.target;
   var uri = tab.linkedBrowser.currentURI.spec; 
   var doc = tab.linkedBrowser.contentDocument;            

   if ( tab.hasAttribute('read') ) setTimeout(function() {  { tab.removeAttribute('unread') } }, 0)
   
   // автоматически меняем название таба для таба "Bookmarks tab" ....
   if ( uri == "chrome://browser/content/bookmarks/bookmarksPanel.xul") doc.title = "Закладки";

   // автоматически очистить адресную строку для 'Bookmarks tab' ....
   if ( gBrowser.currentURI.spec == "chrome://browser/content/bookmarks/bookmarksPanel.xul") {
        gURLBar.value = "";
        gURLBar.focus();
        };
         
   // стоп, если открыть другие вкладки в фоновом режиме ....
   if ( uri !== gBrowser.currentURI.spec ) return; 
        
   // показываем иконки сайтов в адресной строке ....
   gProxyFavIcon.src = ( gBrowser.mCurrentTab.image == '' ) ? "chrome://global/skin/icons/Portrait.png" : gBrowser.mCurrentTab.image;
     
}, true, gBrowser.tabContainer );

Что-то не могу понять как мне приспособить этот код...
listener срабатывает если меняется адрес у таба. Но мне надо отследить появление окна

Выделить код

Код:

open('http://ya.ru', '', 'width=300, height=300')

Что я должен написать в коде?

Упс, я невнимательно прочитал. Ну тогда не знаю, а что ты хочешь добится.

22-12-2013 22:24:55
Можно получить окно вот так но данном случае код отдаёт не правильный адрес:

Выделить код

Код:

// Наблюдатель следит за открытием окон
var observer = {  
       observe: function(subject, topic, data) {
          subject.addEventListener("load", this, false);
          },
      
       handleEvent: function(e) {
          var doc = e.target;
          var win = doc.defaultView;
          var href = doc.location.href.slice(0,60);
          win.removeEventListener("load", this, false);
          
          ...............
        
       }
};
Services.obs.addObserver( observer, "domwindowopened", false);
addDestructor(function() { Services.obs.removeObserver(observer, "domwindowopened", false) });
bunda1 пишет

Упс, я невнимательно прочитал. Ну тогда не знаю, а что ты хочешь добится.

Добиться я хочу вот чего: мне нужно приделать обработчик онклик к кнопке, расположенной в этом окошке. Но не через html атрибут онклик, а через свойство my_button.onclick

Вот я и хочу чтобы какой-то наблюдатель, как только откроется моё окошко, запустил код 

Выделить код

Код:

my_button.onclick=function(){....}
okkamas_knife пишет

toxa
мне кажется тот код(первый что дал бунда1) только для табов.
попробуй пример отсюда

Я там ничего не понял :(

Ты хочешь кнопкой открыть окошко и там что то сделать, так?

bunda1
Если не сложно, обновите пожалуйста Autocopy+3, чтобы она не копировала текст из Find Bar-а и спасибо большое за кнопки. :)

А нет ли случайно CB открывающей Find Bar во всех вкладках, как раньше?

Teu пишет

А нет ли случайно CB открывающей Find Bar во всех вкладках, как раньше?

[CB]Toggle Find+3

voqabuhe
Спасибо, супер вещь, как всегда от bunda1. :)

Для 26 [firefox] можете исправить кнопку?

1) Открывает боковую панель с загрузками.

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

Выделить код

Код:

// Настройка функций кликов мыши для кнопки ................................................................
this.onclick = function(e) {

     // действие при клике ЛКМ ....
     if ( e.button == 0 ) {
          document.getElementById('sidebar-box').getAttribute('sidebarcommand') ? toggleSidebar() : openWebPanel("Downloads", downTabUrl );         
          };
          
     // действие при клике СКМ ....    
     if ( e.button == 1 ) { 
          var windows = Components. classes ['@mozilla.org/appshell/window-mediator;1'].getService(Components. interfaces. nsIWindowMediator).getEnumerator (null);
          while( windows. hasMoreElements() ) {
                 var win = windows.getNext ();
                 if ( win.document.documentURI == "chrome://mozapps/content/downloads/downloads.xul") {    
                      win.close();
                      return;
                      }
                 };
          BrowserDownloadsUI();
          };
     
     // действие при клике ПКМ ....    
     if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { 
          e.preventDefault();  
          downloadManagerInTab( true );
          }
};



// Объявляем переменные для этой вкладки ...................................................................
var downTabUrl = 'chrome://mozapps/content/downloads/downloads.xul';

// иконки для вкладки загрузок ....
const trueDownloadsImg = "data:image/x-icon;base64,AAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAWAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDAAIAAAMACyIAEGyoLtVqpyrVDSIADwAAAgABAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQIAAgAAAgALHwAPZaAmwsXxnv+t63n/XpwbwAcUAA0AAAIAAQIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwADAAACAAwgAA9loyXFv+2W/7/wl/yg52b8n+Nj/1OJG8EBCAAMAAACAAECAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAECAAIAAAIADCEADmSiI8Sx4oX/suWH+7HmhP+T3FX/i9dK+5LZUv9RhxnAAQkADAAAAgABAgACAAAAAAAAAAAAAAAAAQIAAgAAAgANIQANY6Eiw6nbfP+l23f7p913/6fed/+I0kj/gs5A/37KPvuL0Ev/UIYYvwIJAAsAAAIAAQIAAgAAAAABAQABAAABAAsgAA1gnh/BoNJy/5vSa/qe1W3/odhx/5/Ybv+Cy0H/fsg8/3zFOv92vjX6g8VD/0yCFL0BCAALAAABAAABAAEAAAEACRUAEmqmKcyn2Hr/n9Ry/Z3Tbv+Yz2b/mtJp/5nRZv99xDz/ecI3/3e/Nv97wT7/e78//YvKT/9Xjhy/BAwACQAAAQAAAAEAFCkAL2CUKdxhkTDXXI4o1m+mN/KWzGb/ksth/pLLX/93vTn/croz/nm9Pf9noizyVoog1lqNJtlbkx/TDyAAHwAAAQAAAAAAAAAAAAAAAAACAwEEAAAAAD5oFqeXz2X/icFY+4rDWP9ytjX/bLEu+3/CQv8+ZxSnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAEAAQEBAQEDBAMEAAAAAEFqFqeSyV7/g7pR+4S8Uf9usDP/aKsr+3u9Pv9AaRSnAAAAAAMEAgQBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeNxVj/fbRK+3+2Sv9rqzD/ZaYo+3m5PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeJwlT/eLBF+3qyRv9qqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeHwFD/da5B+3exQv9pqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeEv03/cqw8+3WvPv9pqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeCvkn/cKs4+3OuO/9pqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAD9oE6d+vET/bKky+2+sNf9oqCv/Y6Mm+3e3Ov8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFaeDv0v/cKw5+3OvPP9vqzX/aqcx+3+8RP9AaRSnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgAEAAAAADlkCox1szT/a6Yv+W2oMPxspy78aqQt+XSyMv85ZAqMAAAAAAECAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
const falseDownloadsImg = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACmElEQVR42oyU3UtUQRiHn9k9c47Ho+4uhrkthmUfkHeB91GJ1paiJl0EQZd9U3f+E1EX0b8QEUQX0ScZWd0E3VhBrWJFuZuEqyLsOTtnznSxx9rSzPdq5p13nhl+729GTBXL/BUJwAFcwAZEnDdAFagAARDVb7JYHQ6QBTKsHWWgGAPXBblAZu/ubTdUQ6YnKWslWoVIv/z6zYeZ08DCRkA2QPOW7T2dXTuwLAsMhDrk03Shp77mfyABkE6laGluRgiBACJjSKXSf9T8D1RbsBJIy0IIgcGQMAYrKfhn/b9BFtKWv1sWGZKJ5LqgJNAQiyyB1hpI4ti/pYiiCEvKlWlrbIcwFt23YkgH4NWf4DV5OI4DQmCMwWiN53n1FsnF42Xgq5gqljPA9u7OjjvupmxHUypF++Z2duzsIp3O1DQyhkhr5svzFAoFSsUSy0uL6KW5z29nZkeAaSt2a/Xy2Nit8RevLmS3bJUtqRSNXiOOLX+BwlCTTmfY091NLpujNPtF5fvP3IxdrizAB2bPnjt/r21zm3g6PnHe3tQqGxwHy5KIhMBEBoTCMQalAsJqJTh18sS1oeFjD32liysaaWDRV3pydPQ4rtMQPh6fuNjouo7luiREgshEGBPhhyHzc9+DwXz/1YGh4fu+0u+ARUCvtD8EFnylJ/MDg5G0ZfT42cSlnN3peF4TRkWoasCPuWLl6OH+a4fyRx4ENUg5vsgfPgqBcqD0u96+wwYET5+/vNjWnnONiSh9+1rJ9x28cqC3/1Gg9Pt6yFqG1EC5Gur3vX2HsG2pbt+5exYDI0OD1/ftP/ikGq6GAIg1/iNik6Ydmdzl2nI3QKWqPgRKf4xfvt7oE9HAQqD0ZKB0Ic75sYv1Wht+DgB8pQ6678CoOAAAAABJRU5ErkJggg==";



/* Открывать загрузки в табе или переместить вкладку загрузок рядом с текущей вкладкой 
   если загрузи уже открыты и закрыть все лишние вкладки загрузок  ..........................................*/
function downloadManagerInTab( foregroundTab ) {          
  
     setTimeout(function() { closeDownloadManager() }, 0); // закрыть стандартный менеджер загрузок     
     
     // закрыть все вкладки загрузок кроме первой ....
     var downTab = null;
     Array.slice( gBrowser.tabs ).forEach(function(tab) {
           if ( tab.linkedBrowser.currentURI.spec !== downTabUrl ) return;
           !downTab ? downTab = tab : gBrowser.removeTab(tab);
     })
   
     // переместить или открыть вкладку загрузок рядом с текущей вкладкой ....
     var selTab = gBrowser.selectedTab;
     if ( downTab !== selTab ) {
          if ( downTab && gBrowser.visibleTabs.indexOf( downTab ) == -1 )
               TabView.moveTabTo( downTab, TabView._window.GroupItems._activeGroupItem.id );
          downTab = downTab || gBrowser.addTab( downTabUrl );
          var pos = selTab._tPos + ( downTab._tPos > selTab._tPos );
          gBrowser.moveTabTo( downTab, pos );
          gBrowser.selectedTab = downTab;        
          } 
};



// Автоматически меняем иконку для таба "Загрузки" .........................................................
addEventListener("TabAttrModified", function(e) { 
     if ( e.target.linkedBrowser.currentURI.spec == downTabUrl ) {
          var tabIndex = gBrowser.getBrowserIndexForDocument( e.target.linkedBrowser.contentDocument );
          var tab = gBrowser.mTabContainer.childNodes[tabIndex];
          LOG(tab.label)
          tab.image = ( tab.label == "Загрузки" )? falseDownloadsImg: trueDownloadsImg;
          }      
}, true, gBrowser.tabContainer);



// Отслеживать все команды связные с загрузкой и запускать нужные функции и команды  ........
function getCommand(e) {
     var command = e.target.getAttribute("oncommand");
     if ( command == "performCommand('cmd_removeFromList');" || command == 'clearDownloadList();') {
          if ( content.document.location == downTabUrl) document.getElementById("Browser:Reload").doCommand();
          if ( document.getElementById('sidebar-box').getAttribute('sidebarcommand') ) openWebPanel("Downloads", downTabUrl );                
          }
};     
addEventListener("command", getCommand, true, window);



// Исправляем ошибки .......................................................................................
function setFakeArguments(e) {
     if ( e.target.location.href == 'chrome://mozapps/content/downloads/downloads.xul' ) {
     var win = e.target.defaultView;
     win = win.wrappedJSObject || win;
     win.arguments = [];
     }
};
addEventListener("TabClose", setFakeArguments, true, gBrowser);
addEventListener("DOMContentLoaded", setFakeArguments, true, gBrowser);
addEventListener("DOMContentLoaded", setFakeArguments, true, document.getElementById('sidebar-box'));




// Закрыть стандартный менеджер загрузок ....................................................................
function closeDownloadManager() {
     var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
     var dm = wm.getMostRecentWindow("Download:Manager");
     if ( dm ) dm.close();  
};


        
// Подсказка для кнопки .....................................................................................
this.tooltipText = "L: Download Manager in the Sidebar\nM: Download Manager \nR: Download Manager in the Tab\nCtrl+R: CB menu ";


16b1287fb84450ca1731be369209e6b8.jpeg

2) Нужна кнопка, которая откроет окно загрузок (Ctrl+J).

1fesFFFF пишет

Для 26 [firefox] можете исправить кнопку?
1) Открывает боковую панель с загрузками.

А что с ней не так, вроде работает :/

1fesFFFF пишет

2) Нужна кнопка, которая откроет окно загрузок (Ctrl+J).

Создай кнопку с кодом:

Выделить код

Код:

var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
var dm = wm.getMostRecentWindow("Download:Manager");
if ( dm ) dm.focus();    
else       
     BrowserDownloadsUI();

Создай кнопку с кодом:

Спасибо!

А что с ней не так, вроде работает

На 26 [firefox] в ней не отображаются загрузки, т.е. она пустая. А в окне загрузок - отображаются.

1fesFFFF пишет

Для 26 [firefox] можете исправить кнопку?

А если так:

Выделить код

Код:

// Настройка функций кликов мыши для кнопки ................................................................
this.onclick = function(e) {

     // действие при клике ЛКМ ....
     if ( e.button == 0 ) {
          document.getElementById('sidebar-box').getAttribute('sidebarcommand') ? toggleSidebar() : openWebPanel("Downloads", downTabUrl );         
          };
          
     // действие при клике СКМ ....    
     if ( e.button == 1 ) { 
          var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
          var dm = wm.getMostRecentWindow("Download:Manager");
          if ( dm ) dm.focus();    
          else       
               BrowserDownloadsUI();
          };
     
     // действие при клике ПКМ ....    
     if ( e.button == 2 && !e.ctrlKey && !e.shiftKey && !e.altKey && !e.metaKey ) { 
          e.preventDefault();  
          downloadManagerInTab( true );
          }
};



// Объявляем переменные для этой вкладки ...................................................................
var downTabUrl = 'about:downloads';

// иконки для вкладки загрузок ....
const trueDownloadsImg = "data:image/x-icon;base64,AAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAWAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEDAAIAAAMACyIAEGyoLtVqpyrVDSIADwAAAgABAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQIAAgAAAgALHwAPZaAmwsXxnv+t63n/XpwbwAcUAA0AAAIAAQIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAwADAAACAAwgAA9loyXFv+2W/7/wl/yg52b8n+Nj/1OJG8EBCAAMAAACAAECAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAECAAIAAAIADCEADmSiI8Sx4oX/suWH+7HmhP+T3FX/i9dK+5LZUv9RhxnAAQkADAAAAgABAgACAAAAAAAAAAAAAAAAAQIAAgAAAgANIQANY6Eiw6nbfP+l23f7p913/6fed/+I0kj/gs5A/37KPvuL0Ev/UIYYvwIJAAsAAAIAAQIAAgAAAAABAQABAAABAAsgAA1gnh/BoNJy/5vSa/qe1W3/odhx/5/Ybv+Cy0H/fsg8/3zFOv92vjX6g8VD/0yCFL0BCAALAAABAAABAAEAAAEACRUAEmqmKcyn2Hr/n9Ry/Z3Tbv+Yz2b/mtJp/5nRZv99xDz/ecI3/3e/Nv97wT7/e78//YvKT/9Xjhy/BAwACQAAAQAAAAEAFCkAL2CUKdxhkTDXXI4o1m+mN/KWzGb/ksth/pLLX/93vTn/croz/nm9Pf9noizyVoog1lqNJtlbkx/TDyAAHwAAAQAAAAAAAAAAAAAAAAACAwEEAAAAAD5oFqeXz2X/icFY+4rDWP9ytjX/bLEu+3/CQv8+ZxSnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAEAAQEBAQEDBAMEAAAAAEFqFqeSyV7/g7pR+4S8Uf9usDP/aKsr+3u9Pv9AaRSnAAAAAAMEAgQBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeNxVj/fbRK+3+2Sv9rqzD/ZaYo+3m5PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeJwlT/eLBF+3qyRv9qqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeHwFD/da5B+3exQv9pqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeEv03/cqw8+3WvPv9pqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFKeCvkn/cKs4+3OuO/9pqS7/ZKQo+3m4PP8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAD9oE6d+vET/bKky+2+sNf9oqCv/Y6Mm+3e3Ov8/aBOnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAwEEAAAAAEBpFaeDv0v/cKw5+3OvPP9vqzX/aqcx+3+8RP9AaRSnAAAAAAIDAQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAgAEAAAAADlkCox1szT/a6Yv+W2oMPxspy78aqQt+XSyMv85ZAqMAAAAAAECAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
const falseDownloadsImg = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsTAAALEwEAmpwYAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAACmElEQVR42oyU3UtUQRiHn9k9c47Ho+4uhrkthmUfkHeB91GJ1paiJl0EQZd9U3f+E1EX0b8QEUQX0ScZWd0E3VhBrWJFuZuEqyLsOTtnznSxx9rSzPdq5p13nhl+729GTBXL/BUJwAFcwAZEnDdAFagAARDVb7JYHQ6QBTKsHWWgGAPXBblAZu/ubTdUQ6YnKWslWoVIv/z6zYeZ08DCRkA2QPOW7T2dXTuwLAsMhDrk03Shp77mfyABkE6laGluRgiBACJjSKXSf9T8D1RbsBJIy0IIgcGQMAYrKfhn/b9BFtKWv1sWGZKJ5LqgJNAQiyyB1hpI4ti/pYiiCEvKlWlrbIcwFt23YkgH4NWf4DV5OI4DQmCMwWiN53n1FsnF42Xgq5gqljPA9u7OjjvupmxHUypF++Z2duzsIp3O1DQyhkhr5svzFAoFSsUSy0uL6KW5z29nZkeAaSt2a/Xy2Nit8RevLmS3bJUtqRSNXiOOLX+BwlCTTmfY091NLpujNPtF5fvP3IxdrizAB2bPnjt/r21zm3g6PnHe3tQqGxwHy5KIhMBEBoTCMQalAsJqJTh18sS1oeFjD32liysaaWDRV3pydPQ4rtMQPh6fuNjouo7luiREgshEGBPhhyHzc9+DwXz/1YGh4fu+0u+ARUCvtD8EFnylJ/MDg5G0ZfT42cSlnN3peF4TRkWoasCPuWLl6OH+a4fyRx4ENUg5vsgfPgqBcqD0u96+wwYET5+/vNjWnnONiSh9+1rJ9x28cqC3/1Gg9Pt6yFqG1EC5Gur3vX2HsG2pbt+5exYDI0OD1/ftP/ikGq6GAIg1/iNik6Ydmdzl2nI3QKWqPgRKf4xfvt7oE9HAQqD0ZKB0Ic75sYv1Wht+DgB8pQ6678CoOAAAAABJRU5ErkJggg==";



/* Открывать загрузки в табе или переместить вкладку загрузок рядом с текущей вкладкой 
   если загрузи уже открыты и закрыть все лишние вкладки загрузок  ..........................................*/
function downloadManagerInTab( foregroundTab ) {          
  
     setTimeout(function() { closeDownloadManager() }, 0); // закрыть стандартный менеджер загрузок     
     
     // закрыть все вкладки загрузок кроме первой ....
     var downTab = null;
     Array.slice( gBrowser.tabs ).forEach(function(tab) {
           if ( tab.linkedBrowser.currentURI.spec !== downTabUrl ) return;
           !downTab ? downTab = tab : gBrowser.removeTab(tab);
     })
   
     // переместить или открыть вкладку загрузок рядом с текущей вкладкой ....
     var selTab = gBrowser.selectedTab;
     if ( downTab !== selTab ) {
          if ( downTab && gBrowser.visibleTabs.indexOf( downTab ) == -1 )
               TabView.moveTabTo( downTab, TabView._window.GroupItems._activeGroupItem.id );
          downTab = downTab || gBrowser.addTab( downTabUrl );
          var pos = selTab._tPos + ( downTab._tPos > selTab._tPos );
          gBrowser.moveTabTo( downTab, pos );
          gBrowser.selectedTab = downTab;        
          } 
};



// Автоматически меняем иконку для таба "Загрузки" .........................................................
addEventListener("TabAttrModified", function(e) { 
     if ( e.target.linkedBrowser.currentURI.spec == downTabUrl ) {
          var tabIndex = gBrowser.getBrowserIndexForDocument( e.target.linkedBrowser.contentDocument );
          var tab = gBrowser.mTabContainer.childNodes[tabIndex];
          LOG(tab.label)
          tab.image = ( tab.label == "Загрузки" )? falseDownloadsImg: trueDownloadsImg;
          }      
}, true, gBrowser.tabContainer);



// Отслеживать все команды связные с загрузкой и запускать нужные функции и команды  ........
function getCommand(e) {
     var command = e.target.getAttribute("oncommand");
     if ( command == "performCommand('cmd_removeFromList');" || command == 'clearDownloadList();') {
          if ( content.document.location == downTabUrl) document.getElementById("Browser:Reload").doCommand();
          if ( document.getElementById('sidebar-box').getAttribute('sidebarcommand') ) openWebPanel("Downloads", downTabUrl );                
          }
};     
addEventListener("command", getCommand, true, window);



// Закрыть стандартный менеджер загрузок ....................................................................
function closeDownloadManager() {
     var wm = Cc["@mozilla.org/appshell/window-mediator;1"].getService(Ci.nsIWindowMediator);
     var dm = wm.getMostRecentWindow("Download:Manager");
     if ( dm ) dm.close();  
};


        
// Подсказка для кнопки .....................................................................................
this.tooltipText = "L: Download Manager in the Sidebar\nM: Download Manager \nR: Download Manager in the Tab\nCtrl+R: CB menu ";

bunda1
Спасибо! Работает.

Всех с Праздником! Вот какой вопрос у меня. Делал умный человек мне кнопку для поиска скриптов на сайте userscripts.org

скрытый текст
/*CODE*/
url=getBrowser().currentURI.spec;
domen = url.split(/\/+/g)[1];
getBrowser ().  selectedTab = getBrowser (). addTab ("https://userscripts.org/scripts/search?q=" + domen +"&submit=Search");

Хочу для своих нужд переделать, только чтоб брался не весь адрес, а часть после последнего слеша.
скрытый текст
http://www.хххххххх.хх/хххх/вот эта часть

Что-то пытался поменять, но проще спросить. Спасибо.

Mishania пишет

Хочу для своих нужд переделать, только чтоб брался не весь адрес, а часть после последнего слеша.

http://www.хххххххх.хх/хххх/вот эта часть

Не совсем понятно сформулировано - что нужно?
Задать в поиск на сайте userscripts.org адрес страницы, на которой сейчас находишься?

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

Выделить код

Код:

url = content.document.location.href;
adr=(url.substring(url.indexOf('/')+2));
getBrowser().selectedTab = getBrowser().addTab("https://userscripts.org/scripts/search?q=" + adr +"&submit=Search");

Чайник
Нужно чтоб http://www.хххххххх.хх/хххх/вот эта часть - копировалась и подставлялась в строку поиска "http://www.хххххххх.хх/хххх/search?q= вот сюда"

скрытый текст
название сайта не важно, важно именно последний блок адреса и чтоб открывалось в новой фоновой вкладке.

А как сделать, чтобы в кнопке Proxy( Firefox 10 + ) от 11.12.2013 можно было создать прокси из выделения и в текстовых полях?
Я пробовал здесь

Выделить код

Код:

// устанавливаем где показывать пункт меню 
  addEventListener("popupshowing", function() {
     menuitem.hidden = !cbu.getPrefs("Proxy.inContextMenu") || !gContextMenu.isContentSelected;
  }, false, contextMenu );

закомментировать  || !gContextMenu.isContentSelected но тогда пункт "Добавить прокси" висит в меню постоянно. Оно и понятно.

Не сильно это мешает, но может можно сделать все это менее топорным способом?

Замени:

Выделить код

Код:

!gContextMenu.isContentSelected;

на:

Выделить код

Код:

!gContextMenu.isTextSelected;

Спасибо, bunda1!
:)

Я хочу подсчитать (просто для иллюстрации) количество слов Members на этой странице
Запускаю код

Выделить код

Код:

goDoCommand('cmd_selectAll');
goDoCommand('cmd_copy'); 
goDoCommand('cmd_selectNone');

text = readFromClipboard(); // должен получиться весь текст страницы;
x = text.length - text.replace(/Members/g, '').length // сравниваю текст страницы до и после удаления всех вхождений Members
 
alert(x)

Я сравниваю свой результат со счётчиком совпадений кнопки Find
Почему мой код работает некорректно?

toxa
alert(x/"Members".length)

Infocatcher пишет

alert(x/"Members".length)

Ну да, это если искать слово, то конечно.
Но ведь и при поиске одиночного символа мой код и кнопка Find дают разный результат.

toxa
Видимо, дело в том, что при копировании еще (как минимум) alt-текст изображений попадает.

Столкнулся с багом дублирования кода. Версия 0.0.5.7 [seamonkey] 2.23
1) Установить http://forum.mozilla-russia.org/viewtopic.php?id=52666 или http://forum.mozilla-russia.org/viewtopic.php?id=56625
2) Перезапустить [seamonkey].
3) Поведение кнопок меняется по сравнению с обычным, во 2-м случае при левом клике открываются 2 вкладки (должна одна) в 1-м http://ipic.su/img/img7/fs/kiss_26kb.1390930556.jpg.

Список расширений
Mozilla SeaMonkey 2.23 (build 20131210201652)
User Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 SeaMonkey/2.23

*** Расширения ( Включено: 18, Отключено: 0, Всего: 18 )
Adblock Plus 2.4.1
Add Search Engines for SeaMonkey 0.1.0
BarTab Lite 1.2
ChatZilla 0.9.90.1
Custom Buttons 0.0.5.7
DOM Inspector 2.0.15pre
DownloadHelper 4.9.21
FoxyProxy Standard 4.2.3
Greasemonkey 1.13.0.1rc2pre
JavaScript Debugger 0.9.89
Lightning 2.8b1
NewsFox 1.0.8.4.4
NoScript 2.6.8.12
Plain Text Links 1.0.1
SeatabCat 1.0
Stylish 1.3.2.1
WOT 20120910
X-notifier 3.3.10

*** Внешний вид ( Включено: 1, Отключено: 2, Всего: 3 )
SeaMonkey Default Theme 2.23 [ выключен ]
SeaMonkey Modern 2.23 [ выключен ]
Walnut for SeaMonkey 2.0.22

*** Словари ( Включено: 0, Отключено: 0, Всего: 0 )

*** Языки ( Включено: 0, Отключено: 0, Всего: 0 )

*** Плагины ( Включено: 5, Отключено: 0, Всего: 5 )
NVIDIA 3D VISION 7.17.13.3165
NVIDIA 3D Vision 7.17.13.3165
Shockwave Flash 12.0.0.43
SumatraPDF Browser Plugin 2.4.0.0
VLC Web Plugin 2.1.0.0

*** Стили ( Включено: 3, Отключено: 0, Всего: 3 )
Seamonkey unified-reload-stop-button
австоскрытие названия вкладки
Скрытие дропмаркера

*** User Scripts ( Включено: 0, Отключено: 0, Всего: 0 )

*** Кнопки ( Включено: 22, Отключено: 0, Всего: 22 )
About:
Chrome-заголовок Скрыть\показать с запоминанием состояния,плюс выставление размеров окна и возможность перемещения
Context Search
Open Firefox folders and files
Quote+
Save+
Split window vertical
Translate
Undo Close Tab
URLCorrector
Zoom Enlarge for SM
Zoom Reduce for SM
[CB]Attributes Inspector (для разработчиков) 
Автоматически очистить панель поиска после запуска поиска
Добавить новый пункт "Перезапуск" в главном меню
Закрыть Окно\Firefox (ЛКМ\СКМ)
На весь экран/восстановить
Открывать закладки левым кликом в новой вкладке не закрывая меню закладок(Firefox 10 +)
Свернуть окно
Список расширений
Текстовые смайлы
Уменьшить яркость сайта

feas
Это не баг . Просто эти кнопки не предназначены для работы в [seamonkey].Вместо этой http://forum.mozilla-russia.org/viewtopic.php?id=52666 установи эту
http://forum.mozilla-russia.org/viewtop … 02#p636502 отлично работает и в [seamonkey] Ну а эту http://forum.mozilla-russia.org/viewtopic.php?id=56625 обращайся к автору З.Ы. У меня тож есть проблемные кнопки тоже буду обращаться с просьбами к авторам.

lokiju пишет

Это не баг . Просто эти кнопки не предназначены для работы в [seamonkey].Вместо этой http://forum.mozilla-russia.org/viewtopic.php?id=52666 установи эту

ммм Ясно - благодарю.

feas

во 2-м случае при левом клике открываются 2 вкладки (должна одна)

Есть такая проблема. Но по средней кнопке мыши работает вроде нормально.

Тут ещё, как я понимаю, может от системы зависеть. Возможно, поможет изменение параметров middlemouse.contentLoadURL и middlemouse.paste.

feas пишет

Столкнулся с багом дублирования кода. Версия 0.0.5.7 [seamonkey] 2.23

Кажется это баг Custom Buttons 0.0.5.7pre3, вот тут 24-01-2014 22:24:59 почитай под спойлером что пишет Dumby про это. Надо жаловатся автору Custom Buttons.

bunda1 пишет
feas пишет

Столкнулся с багом дублирования кода. Версия 0.0.5.7 [seamonkey] 2.23

Кажется это баг Custom Buttons 0.0.5.7pre3, вот тут 24-01-2014 22:24:59 почитай под спойлером что пишет Dumby про это. Надо жаловатся автору Custom Buttons.

Если глючат все кнопки , то да баг СВ, а если глючат некоторые

lokiju пишет

feas
Это не баг . Просто эти кнопки не предназначены для работы в [seamonkey].Вместо этой http://forum.mozilla-russia.org/viewtopic.php?id=52666 установи эту
http://forum.mozilla-russia.org/viewtop … 02#p636502 отлично работает и в [seamonkey] Ну а эту http://forum.mozilla-russia.org/viewtopic.php?id=56625 обращайся к автору З.Ы. У меня тож есть проблемные кнопки тоже буду обращаться с просьбами к авторам.

http://forum.mozilla-russia.org/viewtop … 02#p636502

Выделить код

Код:

if (document.getElementById(this.nodeIds.searchMenu))
                return;

добавлен из-за [seamonkey] и если его закоментировать и перезапустить SM то появятся два пункта меню.
Это воспроизводится только при первом запуске SM.
CB v0.0.5.7, SM v2.23

SendInfo пишет

Если глючат все кнопки

Глючит много кнопок, практически все в инициализации.

2k1dmg пишет

добавлен из-за [seamonkey] и если его закоментировать

Кстати в кнопке http://forum.mozilla-russia.org/viewtopic.php?id=51861 он есть =) Буду крутить что ещё запуститься.

Мда не выходит. :|
Такая же проблема (возникают только при перезапуске [seamonkey]) в:
[CB]Открывать закладки левым кликом в новой вкладке не закрывая меню - при ЛКМ 2 вкладки
[CB]Memory Monitor 2 индикатора.
[CB]Копировать ссылку как(BBCode) 2 пункта.
[CB]Показывать количество табов в адресной строке 2 индикатора.

feas пишет

Глючит много кнопок, практически все в инициализации.

У меня из 35-ти кнопок глючат точно на [seamonkey] 2: "Открывать ссылки в новой вкладке длинным кликом, от 19.12.2013" ,"Копировать информацию вкладки" и "Link Tooltips"(она и на [firefox] точно также подглючивает). Если первую из перечисленных bunda1 не поправит - установлю Right Links , а вот эти "Копировать информацию вкладки","Link Tooltips" заменить нечем :(
Еще заметил такое :если перед [seamonkey] запускался [firefox] и не было перезагрузки компьютера - кнопки и расширения могут работать странно - может это только у меня.

feas пишет

Мда не выходит. :|
Такая же проблема (возникают только при перезапуске [seamonkey]) в:
[CB]Открывать закладки левым кликом в новой вкладке не закрывая меню - при ЛКМ 2 вкладки
[CB]Memory Monitor 2 индикатора.
[CB]Копировать ссылку как(BBCode) 2 пункта.
[CB]Показывать количество табов в адресной строке 2 индикатора.

Можно все эти коды + мой Context Search закинуть в одну кнопку в начале которой поставить:

Выделить код

Код:

if ( self.hasAttribute("stop") ) return; 
self.setAttribute("stop", "true");

И все дела.

lokiju пишет

У меня из 35-ти кнопок глючат точно на [seamonkey] 2: "Открывать ссылки в новой вкладке длинным кликом, от 19.12.2013" ,"Копировать информацию вкладки" и "Link Tooltips"(она и на [firefox] точно также подглючивает).

Такой же совет.

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

Код:

if ( self.hasAttribute("stop") ) return; 
self.setAttribute("stop", "true");

Спасибо.

lokiju пишет

а вот эти "Копировать информацию вкладки"

Если речь об этой, то может попробуй

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

Выделить код

Код:

//const root = n("tabContextMenu");
    const root = document.getAnonymousElementByAttribute(gBrowser, "anonid", "tabContextMenu");

Dumby нет. Эта на [seamonkey] вообще не работала.

Эта

Выделить код

Код:

/*Initialization Code*/
//seamonkey
if ( self.hasAttribute("stop") ) return; 
self.setAttribute("stop", "true");
//Копировать информацию вкладки
(function() {
    var htmlEscape = function(s) {
        s = s.replace(/&/g, "&amp;");
        s = s.replace(/>/g, "&gt;");
        s = s.replace(/</g, "&lt;");
        s = s.replace(/"/g, "&quot;");
        return s;
    };
    var copyTabInfo = function (aAsHTML) {
        var tab = document.popupNode;
        var title = tab.label;
        var url = gBrowser.getBrowserForTab(tab).contentWindow.location.href;
        var txt = aAsHTML ?
                  '<a href="' + htmlEscape(url) + '">' + htmlEscape(title) + '</a>' :
                  title + "\n" + url;
        Cc["@mozilla.org/widget/clipboardhelper;1"]
        .getService(Ci.nsIClipboardHelper)
        .copyString(txt);
    };
    var copyTabBBC = function (aAsBBC) {
        var tab = document.popupNode;
        var title = tab.label;
        var url = gBrowser.getBrowserForTab(tab).contentWindow.location.href;
        var txt = aAsBBC ?
                  '[url=' + htmlEscape(url) + ']' + htmlEscape(title) + '[/url]' :
                  title + "\n" + url;
        Cc["@mozilla.org/widget/clipboardhelper;1"]
        .getService(Ci.nsIClipboardHelper)
        .copyString(txt);
    };
    var menuitem1 = document.createElement("menuitem");
    menuitem1.setAttribute("label", "Копировать название + URL");
    menuitem1.addEventListener("command", function() { copyTabInfo(false); }, false);
    var menuitem2 = document.createElement("menuitem");
    menuitem2.setAttribute("label", "Копировать название + URL (HTML)");
    menuitem2.addEventListener("command", function() { copyTabInfo(true); }, false);
    var menuitem3 = document.createElement("menuitem");
    menuitem3.setAttribute("label", "Копировать название + URL (BBCode)");
    menuitem3.addEventListener("command", function() { copyTabBBC(true); }, false);
    setTimeout(function() {
        gBrowser.mStrip.childNodes[1].appendChild(document.createElement("menuseparator"));
        gBrowser.mStrip.childNodes[1].appendChild(menuitem1);
        gBrowser.mStrip.childNodes[1].appendChild(menuitem2);
        gBrowser.mStrip.childNodes[1].appendChild(menuitem3);
    }, 0);
})();


с правкой от bunda1 нормально работает.

Выделить код

Код:

if ( self.hasAttribute("stop") ) return; 
self.setAttribute("stop", "true");

Спасибо =) Покоя не давала интуиция что они все явно взаимосвязаны, и не сложно решалась like "Restart Firefox"

bunda1, поправь пожалуйста Find (№112)

05-02-2014 16:33:48
для 27 [firefox]

Pony_Smile_Pack пишет

bunda1, поправь пожалуйста Find (№112)

Пытаюсь !

Pony_Smile_Pack пишет

bunda1, поправь пожалуйста Find (№112)
[firefox]

Вот Dumby исправил для FF27:

Выделить код

Код:

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%3EFind%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%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%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20....................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%0A%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%20....%0A%20%20%20%20if%20%28e.button%20%3D%3D%201%29%20%7B%20gShowPopup%28this%29%3B%20return%3B%20%7D%0A%0A%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041B%u041A%u041C%20%u0438%u043B%u0438%20%u041F%u041A%u041C%20....%0A%20%20%20%20var%20str%20%3D%20getSelect%28%29%3B%0A%20%20%20%20if%20%28%21str%29%20return%3B%0A%20%20%20%20var%20fastFind%20%3D%20gBrowser.finder._fastFind%3B%0A%0A%20%20%20%20fastFind.find%28str%2C%20false%29%20%3D%3D%20fastFind.FIND_FOUND%0A%20%20%20%20%3F%20fastFind.findAgain%28e.button%2C%20false%29%0A%20%20%20%20%3A%20disableIcon%28%29%3B%0A%20%20%20%20%0A%20%20%20%20//%20%u0411%u043B%u043E%u043A%u0438%u0440%u0443%u0435%u043C%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20%u0431%u0435%u0437%20%u043C%u043E%u0434%u0438%u0444%u0438%u043A%u0430%u0442%u043E%u0440%u043E%u0432%20....................%0A%20%20%20%20if%20%28e.button%20%3D%3D%202%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28e.ctrlKey%20%7C%7C%20e.shiftKey%20%7C%7C%20e.altKey%20%7C%7C%20e.metaKey%29%20return%3B%0A%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%7D%0A%7D%3B%0Athis.ondblclick%20%3D%20function%28e%29%20e.button%20%21%3D%202%3B%0A%0A%0A//%20%u0412%u0440%u0435%u043C%u0435%u043D%u043D%u043E%20%u043E%u0442%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20....................%20%20%0Afunction%20disableIcon%28%29%20%7B%0A%20%20%20self.style.filter%20%3D%20%27url%28%22chrome%3A//mozapps/skin/extensions/extensions.svg%23greyscale%22%29%27%3B%0A%20%20%20setTimeout%28function%28%29%20%7B%20self.style.filter%20%3D%20%27%27%20%7D%2C%20600%29%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%u043B%u0438%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%2C%20%u0435%u0441%u043B%u0438%20%u043D%u0435%u0442%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%27false%27%20................................%0Afunction%20getSelect%28%29%20%7B%0A%20%20%20var%20sel%20%3D%20document.commandDispatcher.focusedWindow.getSelection%28%29.toString%28%29%3B%20//%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%0A%20%20%20if%20%28%20sel%20%3D%3D%20%27%27%20%29%20%7B%20%20%20%20%0A%20%20%20%20%20%20%20%20var%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0A%20%20%20%20%20%20%20%20if%20%28%20theBox%20%26%26%20%28theBox.type%20%3D%3D%20%22text%22%20%7C%7C%20theBox.type%20%3D%3D%20%22textarea%22%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20var%20startPos%20%3D%20theBox.selectionStart%3B%0A%09%20%20%20%20%20var%20endPos%20%3D%20theBox.selectionEnd%3B%0A%09%20%20%20%20%20var%20sel%20%3D%20theBox.value.substring%28startPos%2C%20endPos%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%20%0A%20%20if%20%28%20sel%20%3D%3D%20%27%27%20%29%20var%20sel%20%3D%20gClipboard.read%28%29%3B%20//%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%0A%20%20if%20%28%20sel%20%3D%3D%20%27%27%20%29%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.showAlertNotification%28%20self.image%2C%20self.label%2C%20%22%u0412%u044B%u0434%u0435%u043B%u0438%u0442%u0435%20%u0438%u043B%u0438%20%u0441%u043A%u043E%u043F%u0438%u0440%u0443%u0439%u0442%u0435%20%u0442%u0435%u043A%u0441%u0442%21%22%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%20%29%3B%0A%20%20%0A%20%20return%20%28%20sel%20%3D%3D%20%27%27%20%29%20%3F%20false%20%3A%20sel.toString%28%29.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%22%22%29%3B%20//%20%u0443%u0431%u0438%u0440%u0430%u0435%u043C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%20%u0441%20%u043A%u043E%u043D%u0446%u043E%u0432%20%u0442%u0435%u043A%u0441%u0442%u0430%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20....................%0Athis.tooltipText%20%3D%20%22%u041B%3A%20%u0418%u0441%u043A%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%u0430/%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u0434%u0430%u043B%u0435%u0435%20%5Cn%u0421%3A%20CB%20%u041C%u0435%u043D%u044E%20%5Cn%u041F%3A%20%u0418%u0441%u043A%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%u0430/%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043D%u0430%u0437%u0430%u0434%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%0A%0A%0A%0A%0A%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
bunda1 пишет
Pony_Smile_Pack пишет

bunda1, поправь пожалуйста Find (№112)
[firefox]

Вот Dumby исправил для FF27

Спасибо.

Pony_Smile_Pack
Рано благодаришь! Я похоже сломал кнопку, вот так правильно:

Выделить код

Код:

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%3EFind%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%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%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20....................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%0A%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u0421%u041A%u041C%20....%0A%20%20%20%20if%20%28e.button%20%3D%3D%201%29%20%7B%20gShowPopup%28this%29%3B%20return%3B%20%7D%0A%0A%20%20%20%20//%20%u0411%u043B%u043E%u043A%u0438%u0440%u0443%u0435%u043C%20%u043A%u043E%u043D%u0442%u0435%u043A%u0441%u0442%u043D%u043E%u0435%20%u043C%u0435%u043D%u044E%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041F%u041A%u041C%20%u0431%u0435%u0437%20%u043C%u043E%u0434%u0438%u0444%u0438%u043A%u0430%u0442%u043E%u0440%u043E%u0432%20....................%0A%20%20%20%20if%20%28e.button%20%3D%3D%202%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28e.ctrlKey%20%7C%7C%20e.shiftKey%20%7C%7C%20e.altKey%20%7C%7C%20e.metaKey%29%20return%3B%0A%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20//%20%u0434%u0435%u0439%u0441%u0442%u0432%u0438%u0435%20%u043F%u0440%u0438%20%u043A%u043B%u0438%u043A%u0435%20%u041B%u041A%u041C%20%u0438%u043B%u0438%20%u041F%u041A%u041C%20....%0A%20%20%20%20var%20str%20%3D%20getSelect%28%29%3B%0A%20%20%20%20if%20%28%21str%29%20return%3B%0A%20%20%20%20var%20fastFind%20%3D%20gBrowser.finder._fastFind%3B%0A%0A%20%20%20%20fastFind.find%28str%2C%20false%29%20%3D%3D%20fastFind.FIND_FOUND%0A%20%20%20%20%3F%20fastFind.findAgain%28e.button%2C%20false%29%0A%20%20%20%20%3A%20disableIcon%28%29%3B%0A%7D%3B%0Athis.ondblclick%20%3D%20function%28e%29%20e.button%20%21%3D%202%3B%0A%0A%0A//%20%u0412%u0440%u0435%u043C%u0435%u043D%u043D%u043E%20%u043E%u0442%u043A%u043B%u044E%u0447%u0438%u0442%u044C%20%u0438%u043A%u043E%u043D%u043A%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20....................%20%20%0Afunction%20disableIcon%28%29%20%7B%0A%20%20%20self.style.filter%20%3D%20%27url%28%22chrome%3A//mozapps/skin/extensions/extensions.svg%23greyscale%22%29%27%3B%0A%20%20%20setTimeout%28function%28%29%20%7B%20self.style.filter%20%3D%20%27%27%20%7D%2C%20600%29%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%20%u0438%u043B%u0438%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%2C%20%u0435%u0441%u043B%u0438%20%u043D%u0435%u0442%20%u0442%u0435%u043A%u0441%u0442%u0430%20%u043F%u043E%u043B%u0443%u0447%u0438%u0442%u044C%20%27false%27%20................................%0Afunction%20getSelect%28%29%20%7B%0A%20%20%20var%20sel%20%3D%20document.commandDispatcher.focusedWindow.getSelection%28%29.toString%28%29%3B%20//%20%u0438%u0437%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u044B%0A%20%20%20if%20%28%20sel%20%3D%3D%20%27%27%20%29%20%7B%20%20%20%20%0A%20%20%20%20%20%20%20%20var%20theBox%20%3D%20document.commandDispatcher.focusedElement%3B%0A%20%20%20%20%20%20%20%20if%20%28%20theBox%20%26%26%20%28theBox.type%20%3D%3D%20%22text%22%20%7C%7C%20theBox.type%20%3D%3D%20%22textarea%22%29%20%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20var%20startPos%20%3D%20theBox.selectionStart%3B%0A%09%20%20%20%20%20var%20endPos%20%3D%20theBox.selectionEnd%3B%0A%09%20%20%20%20%20var%20sel%20%3D%20theBox.value.substring%28startPos%2C%20endPos%29%3B%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%20%0A%20%20if%20%28%20sel%20%3D%3D%20%27%27%20%29%20var%20sel%20%3D%20gClipboard.read%28%29%3B%20//%20%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043E%u0431%u043C%u0435%u043D%u0430%0A%20%20if%20%28%20sel%20%3D%3D%20%27%27%20%29%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.showAlertNotification%28%20self.image%2C%20self.label%2C%20%22%u0412%u044B%u0434%u0435%u043B%u0438%u0442%u0435%20%u0438%u043B%u0438%20%u0441%u043A%u043E%u043F%u0438%u0440%u0443%u0439%u0442%u0435%20%u0442%u0435%u043A%u0441%u0442%21%22%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%20%29%3B%0A%20%20%0A%20%20return%20%28%20sel%20%3D%3D%20%27%27%20%29%20%3F%20false%20%3A%20sel.toString%28%29.replace%28/%5E%5Cs+%7C%5Cs+%24/g%2C%22%22%29%3B%20//%20%u0443%u0431%u0438%u0440%u0430%u0435%u043C%20%u043F%u0440%u043E%u0431%u0435%u043B%u044B%20%u0441%20%u043A%u043E%u043D%u0446%u043E%u0432%20%u0442%u0435%u043A%u0441%u0442%u0430%0A%7D%3B%0A%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20....................%0Athis.tooltipText%20%3D%20%22%u041B%3A%20%u0418%u0441%u043A%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%u0430/%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u0434%u0430%u043B%u0435%u0435%20%5Cn%u0421%3A%20CB%20%u041C%u0435%u043D%u044E%20%5Cn%u041F%3A%20%u0418%u0441%u043A%u0430%u0442%u044C%20%u0432%u044B%u0434%u0435%u043B%u0435%u043D%u043D%u044B%u0439%20%u0442%u0435%u043A%u0441%u0442%u0430/%u0438%u0437%20%u0431%u0443%u0444%u0435%u0440%u0430%20%u043D%u0430%u0437%u0430%u0434%22%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B%0A%0A%0A%0A%0A%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E
bunda1 пишет

Pony_Smile_Pack
Рано благодаришь! Я похоже сломал кнопку, вот так правильно:

Спасибо.

Можно сделать кнопку "Обновить все вкладки"
В идеале, хорошо бы было при нажатии ЛКМ обновлялась текущая кнопка, а при нажатии ПКМ (или СКМ, без разницы) обновлялись все вкладки

middim пишет

Можно сделать кнопку "Обновить все вкладки"
В идеале, хорошо бы было при нажатии ЛКМ обновлялась текущая кнопка, а при нажатии ПКМ (или СКМ, без разницы) обновлялись все вкладки

Выделить код

Код:

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%3E%u041E%u0431%u043D%u043E%u0432%u0438%u0442%u044C%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAEAwMACQUDAwAAAAI4HQwAwWgyMrNpPLC0Xh3Ttl4S0LdhFNC2YRXTslgar7QxAzIzCAAAAAABAQgDAAMDAgAAAgEBAQAAAAA/IhAfnVIseLhjLM3DdRPqzoMJ8tiQD/LenCby3Z878tONNOrBZRrNmUEUdzsXCx4AAAAAAgEAAX9oWARhQzEanVEhktl3H/TKewf+3I8A/+GVAP/lnQH/6qsa//C6P//1w0z/6bdL/umPM/SeSRCQUysAGWRFAgTss5IA2YpjfMJwLvfIghr/1o0L9tKCB/3OiCD+zZM8/s+dT/7Wp17+5LZk/fbGWfbquEn/1Icl9sRgA3u5XwAAunxjMLhvSMbRijD/36lM9s2XY//CfUz/xZ6V/8u8wv/Pw8f/zbzC/82uov/hs2n/+ctd9u26Tf+5ZBzGmSkCL8uagbDJhkTp3JUc/+i9Yv3dzrz/2s7N/+He3//k5uX/4+Hd/+Pf2f/i3NX/3cSr/+3Fav31xEX/1pEt6bVgFK/DgjvY0ZNE8+apQf/txHj+7ebc/+/y9//s7Oz/5dbM/+G8f//frUP/3a1f/920fv/ntlL+87wp/9+eGPPAcQTXx4Aj09meTfPptWP/7cmM/vXt4P/9//7//f///+7Zw//mvoP/6sWF/+vLn//v2Lv/6bx7/uqqH//elwDzxngB09GNKtPep2Dz6r58/+vHjf7r0br/6tC6/+zQsP/fsX7/37qe//Pu9P/9/v///////+zHqP7lpDn/3pkO8s2CD9Dcn0nY4axs8+rBhf/sx43+5L+d/9y0lP/Xp2//051s/9++rf/18fH////////////v0K7+57Jq/+GjPPLRhQjQ6cCVsOOqZunnt3P/79Cf/fLYtf/58e3/9vDy//fz8//9/Pz////+//78+f///v3/8+DC/uu/gf/hozry1JAA0uPAlzDfqWnG5bR2/+3Lmvbuzpz/9eHG//z27v///////v37//nu3//y27n/89u6//HZuvzosFT/36A29N2+leH+/+oA/9+jfOupTvfdqmH/7c2e9vDTpP3y2a3+8ty2/vHZsv7u0KD+7MqR/u3MnPvluXn52JlD/+W/jtf///9wkpeHBHdqUhrHlESS/8dl9OKxcv7pu3z/68OT/+zHmf/sxZL/68OM/+i7fP/hqVH/8qdB7//qrtjd4dp0hoB+CgMCAQEAAAAAUkQtH8uiYXjnr2LN5K9t6uWyYPLms1jy5a9T8eWwXPPms3Py67Ne5a58O4u6pIs1hIWCDgAAAAAEBAQACwkHAwAAAAFJPSoA/dSZNOi/hrDdnxbU2pMA0tiRAM/blw/W6rt40f/sz4xMSEMeAAAAAAgIBwQEBAQBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20%20%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%20%u0444%u0443%u043D%u043A%u0446%u0438%u0439%20%u043A%u043B%u0438%u043A%u043E%u0432%20%u043C%u044B%u0448%u0438%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20...............................................%0Athis.onclick%20%3D%20function%28e%29%20%7B%0A%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%200%20%29%20BrowserReload%28%29%3B%20//%20%u041B%u041A%u041C%0A%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%201%20%29%20gShowPopup%28this%29%3B%20//%20%u0421%u041A%u041C%20%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20if%20%28%20e.button%20%3D%3D%202%20%26%26%20%21e.ctrlKey%20%26%26%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.metaKey%20%29%20%7B%20//%20%u041F%u041A%u041C%0A%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20gBrowser.reloadAllTabs%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%7D%0A%7D%3B%0A%0Athis.tooltipText%20%3D%20%22%u041B%3A%20%u041E%u0431%u043D%u043E%u0432%u0438%u0442%u044C%20%u0442%u0435%u043A%u0443%u0449%u0443%u044E%20%u0432%u043A%u043B%u0430%u0434%u043A%u0443%20%5Cn%u0421%3A%20CB%20%u041C%u0435%u043D%u044E%20%5Cn%u041F%3A%20%u041E%u0431%u043D%u043E%u0432%u0438%u0442%u044C%20%u0432%u0441%u0435%20%u0432%u043A%u043B%u0430%u0434%u043A%u0438%22%3B%0A%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Всем привет!Я новичёк прошу сильно не ругаться,хочу узнать есть-ли расширение типа Tab_Position_Customizer_RU_2.5 как в Chome,надо,чтоб вкладка открывалась  последняя,а при закрытии фокусировалась из которой была открыта,кроме Tab Mix Plus.Спасибо.

vit0149 пишет

Всем привет!Я новичёк прошу сильно не ругаться,хочу узнать есть-ли расширение типа Tab_Position_Customizer_RU_2.5

В этой теме просят сделать или исправить Сustom Buttons кнопки а не расширения.

https://forum.mozilla-russia.org/viewto … 19#p649119
А есть у нас способ вернуть кнопку закладок в адресную? видимо расширение этого не может.

feas пишет

А есть у нас способ вернуть кнопку закладок в адресную? видимо расширение этого не может.

Что за кнопка закладок, id у неё какой?

etoins srldu пишет

Что за кнопка закладок, id у неё какой?

звездочку.

Престала работать кнопка в FF29 https://forum.mozilla-russia.org/viewto … 70#p626370
Прошу поправить, если возможно.

bunda1, почините плз под 29 [CB]Искать страницу в кэше Google или на Archive.org
Спасибо.

Кнопки, помещенные в новое меню Firefox 29, не инициализируются, пока не откроешь это меню. Кто-нибудь в курсе, это чинится?

Uxapb пишет

bunda1, почините плз под 29 [CB]Искать страницу в кэше Google или на Archive.org
Спасибо.

Куда ты хочешь переместить подменю Искать страницу?

etoins srldu пишет

Куда ты хочешь переместить подменю Искать страницу?

В Инструменты, в самый низ.
А в идеале бы отдельную кнопку с выпадающим меню по клику.

Uxapb пишет

В Инструменты, в самый низ.

Выделить код

Код:

// Добавить новый пункт "Искать страницу" в меню kнопки ................................
(function () { 
   var img = "data:image/x-icon;base64,AAABAAEAEhAAAAEAGADoAwAAFgAAACgAAAASAAAAIAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADx9vm0y9y40OC50OG40OG40OG40OG40OG40OG40d68z+yuz8a34qYAAAAAAAAAAAAAAAAEkQAAANLl9Dya11Oo2Eqg0kyh00uh0kqg0kyf0kqgzkqYzz2MrRexIxfFA6PhpQAAAAAAAAAAAASRAAAA1Of4Sq3rXKLUYqjeYajeY6vgZq7kYqrcYaHYSoasI7wsMPMqLu8yHdUdrOCqAAAAAAAABJEAAADU5/dGp+VireB4xfx2xPpyvvNprt5ss+pgpcsmwjct8iYz7DU17DM58zcl2SSu464AAAAEkQAAANTo+Eio5mOr33XA93bE+WWs3HOu0V6jyS6+PWvwXHPvdUDuQDfuNWryaXXwdDLOM7DnsQSRAAAA1Oj4RqfmZK3gesj8dsX4d8f5e8n7arncPbNzKKNMZdtiX/dfR/FDl/KWWMNYe9R7v+u/BJEAAADW5/hFqOZ0uuKc3PiU1/aU2PaV1/SU1fGZxv9aop1a21d2+3Vg9WSW8peA04EAAAAAAAAEkQAAANTm9kuv63TD8Gy46W+76m666m+762286W+z5ziVh2fYXLr7ran2npXolm/ObgAAAAAAAASRAAAA1Ob3SaznWqPSXanZXanZXqvaYa3eYKzbXqbZUKW0R8JpPbZzRbp4a81oo+CjAAAAAAAABJEAAADV5/hGqOVmteOA1f990v980fx0xe91zfl/2f9/1/+d3Pxgt/Jsvv8AAAAAAAAAAAAAAAAEkQAAANTn90eq5WW14nzS/X3U/2q34XazzHvG73bP/XnS/ZLb9F225Wq+8QAAAAAAAAAAAAAAAASRAAAA0+f3SKrlZbfletX/edH/d9D9gtv+gdn/etT/edf/lN36W7foa772AAAAAAAAAAAAAAAABJEAAADW6PhEqOd/wOCk5PqX2/ea3viY3PeY3faZ3/ia3/ig2/Rctelsv/cAAAAAAAAAAAAAAAAEkQAAAM/k9kuv6nnE63O/7XPA7XPA7nTA7XXA7XO/7XTA7HK+7GnC8Ge79QAAAAAAAAAAAAAAAASRAAAA3u34ccDvoOb8n+P7oOT8oOT8oOT8oOT8oeT8n+T8pOf9jdn5jMn1AAAAAAAAAAAAAAAABJEAAAAAAADB4vtRtvRbv/dZvvZZvvZavvdavvZavvZcwPZXvfZ3w/YAAAAAAAAAAAAAAAAAAAAEkYADwEGAAcBBgADAQYAAQEGAAABBgAAAQYAAwEGAAMBBgADAQYADwEGAA8BBgAPAQYADwEGAA8BBgAPAQcAHwEE=";
   var menu = document.createElement("menu");
   menu.setAttribute("label", "Искать страницу");
   menu.setAttribute("class", "menu-iconic");
   menu.setAttribute("image", img );
   menu.onmouseout = function() { menu.removeAttribute('_moz-menuactive') }; 

   var array = [
       ["в кэше Google", function() gBrowser.selectedTab = gBrowser.addTab('http://www.google.com/search?q=cache:' + content.location) ],
       ["на Archive.org", function() gBrowser.selectedTab = gBrowser.addTab('http://web.archive.org/web/' + content.location) ],
       //["separator"],
               ];
   var menuPopup = document.createElement("menupopup");
   menuPopup.onmouseover = function() { menu.setAttribute('_moz-menuactive', 'true') };
   array.forEach(function( m ) {
        if ( m[0] == "separator" ) { menuPopup.appendChild( document.createElement("menuseparator") ); return };
        var menuItem = document.createElement("menuitem");
        menuItem.setAttribute("label", m[0] );
        menuItem.addEventListener("command", m[1] );
        menuPopup.appendChild( menuItem );
   });
   menu.appendChild( menuPopup );

   var toolsMenu = document.getElementById("menu_ToolsPopup");
   toolsMenu.appendChild( menu );
   addDestructor(function() toolsMenu.removeChild( menu ) );
})();

02-05-2014 22:08:38

okkamas_knife пишет

лучше добавь в контекстное меню вкладки эти пункты

Тоже можно.

etoins srldu пишет
Uxapb пишет

В Инструменты, в самый низ.

Выделить код

Код:

// Добавить новый пункт "Искать страницу" в меню kнопки ................................
(function () { 
   var img = "data:image/x-icon;base64,AAABAAEAEhAAAAEAGADoAwAAFgAAACgAAAASAAAAIAAAAAEAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADx9vm0y9y40OC50OG40OG40OG40OG40OG40OG40d68z+yuz8a34qYAAAAAAAAAAAAAAAAEkQAAANLl9Dya11Oo2Eqg0kyh00uh0kqg0kyf0kqgzkqYzz2MrRexIxfFA6PhpQAAAAAAAAAAAASRAAAA1Of4Sq3rXKLUYqjeYajeY6vgZq7kYqrcYaHYSoasI7wsMPMqLu8yHdUdrOCqAAAAAAAABJEAAADU5/dGp+VireB4xfx2xPpyvvNprt5ss+pgpcsmwjct8iYz7DU17DM58zcl2SSu464AAAAEkQAAANTo+Eio5mOr33XA93bE+WWs3HOu0V6jyS6+PWvwXHPvdUDuQDfuNWryaXXwdDLOM7DnsQSRAAAA1Oj4RqfmZK3gesj8dsX4d8f5e8n7arncPbNzKKNMZdtiX/dfR/FDl/KWWMNYe9R7v+u/BJEAAADW5/hFqOZ0uuKc3PiU1/aU2PaV1/SU1fGZxv9aop1a21d2+3Vg9WSW8peA04EAAAAAAAAEkQAAANTm9kuv63TD8Gy46W+76m666m+762286W+z5ziVh2fYXLr7ran2npXolm/ObgAAAAAAAASRAAAA1Ob3SaznWqPSXanZXanZXqvaYa3eYKzbXqbZUKW0R8JpPbZzRbp4a81oo+CjAAAAAAAABJEAAADV5/hGqOVmteOA1f990v980fx0xe91zfl/2f9/1/+d3Pxgt/Jsvv8AAAAAAAAAAAAAAAAEkQAAANTn90eq5WW14nzS/X3U/2q34XazzHvG73bP/XnS/ZLb9F225Wq+8QAAAAAAAAAAAAAAAASRAAAA0+f3SKrlZbfletX/edH/d9D9gtv+gdn/etT/edf/lN36W7foa772AAAAAAAAAAAAAAAABJEAAADW6PhEqOd/wOCk5PqX2/ea3viY3PeY3faZ3/ia3/ig2/Rctelsv/cAAAAAAAAAAAAAAAAEkQAAAM/k9kuv6nnE63O/7XPA7XPA7nTA7XXA7XO/7XTA7HK+7GnC8Ge79QAAAAAAAAAAAAAAAASRAAAA3u34ccDvoOb8n+P7oOT8oOT8oOT8oOT8oeT8n+T8pOf9jdn5jMn1AAAAAAAAAAAAAAAABJEAAAAAAADB4vtRtvRbv/dZvvZZvvZavvdavvZavvZcwPZXvfZ3w/YAAAAAAAAAAAAAAAAAAAAEkYADwEGAAcBBgADAQYAAQEGAAABBgAAAQYAAwEGAAMBBgADAQYADwEGAA8BBgAPAQYADwEGAA8BBgAPAQcAHwEE=";
   var menu = document.createElement("menu");
   menu.setAttribute("label", "Искать страницу");
   menu.setAttribute("class", "menu-iconic");
   menu.setAttribute("image", img );
   menu.onmouseout = function() { menu.removeAttribute('_moz-menuactive') }; 

   var array = [
       ["в кэше Google", function() gBrowser.selectedTab = gBrowser.addTab('http://www.google.com/search?q=cache:' + content.location) ],
       ["на Archive.org", function() gBrowser.selectedTab = gBrowser.addTab('http://web.archive.org/web/' + content.location) ],
       //["separator"],
               ];
   var menuPopup = document.createElement("menupopup");
   menuPopup.onmouseover = function() { menu.setAttribute('_moz-menuactive', 'true') };
   array.forEach(function( m ) {
        if ( m[0] == "separator" ) { menuPopup.appendChild( document.createElement("menuseparator") ); return };
        var menuItem = document.createElement("menuitem");
        menuItem.setAttribute("label", m[0] );
        menuItem.addEventListener("command", m[1] );
        menuPopup.appendChild( menuItem );
   });
   menu.appendChild( menuPopup );

   var toolsMenu = document.getElementById("menu_ToolsPopup");
   toolsMenu.appendChild( menu );
   addDestructor(function() toolsMenu.removeChild( menu ) );
})();

02-05-2014 22:08:38

okkamas_knife пишет

лучше добавь в контекстное меню вкладки эти пункты

Тоже можно.

Я поставил подменю в таб контекст меню (вместо menu_ToolsPopup поставил tabContextMenu) - работает.
Есть один момент: поиск всегда делается для активной вкладки независимо от того на какую вкладку делаешь правый клик.
Может надо заменить content.location или gURLBar.value на что-нибудь другое?

rgdru пишет

Престала работать кнопка в FF29 https://forum.mozilla-russia.org/viewto … 70#p626370

У меня не перестала :/.

MDM пишет

Кнопки, помещенные в новое меню Firefox 29, не инициализируются, пока не откроешь это меню. Кто-нибудь в курсе, это чинится?

№30.
А ещё не инициализируются кнопки, когда попадают в #widget-overflow-list.
Ещё, после клонирования или удаления кнопки, изменение не регистрируется
в CustomizableUIInternal и browser.uiCustomization.state,
что, иногда, приводит к небольшим недоразумениям.
Вот, пробую так

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

Выделить код

Код:

(function() {
    if (gBrowser.currentURI.spec == "about:customizing") return;

    var observer = {};
    observer.observe = function(subject, topic, data) {

        var id = data.split(":")[1];
        if (topic.endsWith("cloneButton")) {
            var {area, position} = CustomizableUI.getPlacementOfWidget(id);
            CustomizableUI.addWidgetToArea(subject.id, area, position + 1);
        }
        else CustomizableUI.removeWidgetFromArea(id);
    }
    const topicRemove = custombuttons.notificationPrefix + "removeButton";
    const topicClone = custombuttons.notificationPrefix + "cloneButton";
    Services.obs.addObserver(observer, topicRemove, false);
    Services.obs.addObserver(observer, topicClone , false);
    addDestructor(function() {
        Services.obs.removeObserver(observer, topicRemove);
        Services.obs.removeObserver(observer, topicClone);
    });

    var panel = document.getElementById("PanelUI-popup");
    if (!panel.hidden) return;

    for(var toolbar of document.getElementsByTagName("toolbar")) {
        if (!toolbar.hasOwnProperty("overflowable")) continue;

        var func = toolbar.overflowable.onOverflow;
        toolbar.overflowable.onOverflow = function() {
            func.apply(this, arguments);

            this._list._localName = this._list.localName;
            this._list.__defineGetter__("localName", function()
                arguments.callee.caller == custombutton.buttonConstructor ? "toolbar" : this._localName
            );
            setTimeout(function(overflowable) {
                overflowable._panel.hidden = false;
                overflowable.onOverflow = func;
            }, 0, this);
        }
    }

    var btn = document.getElementById("PanelUI-menu-button");
    panel.addEventListener("popupshown", function hideMenu(e) {
        this.removeEventListener(e.type, hideMenu, false);
        btn.click(); // Hides menu
        setTimeout(function() panel.collapsed = false, 0);
    }, false);
    panel.collapsed = true;
    btn.click(); // Opens menu

})();

difabor пишет

Может надо заменить content.location или gURLBar.value на что-нибудь другое?

Попробуй на TabContextMenu.contextTab.linkedBrowser.currentURI.spec

Dumby
2a198d36afd47c34ce552a7a4ba48e0d.jpeg
А у меня вот так.

Dumby пишет

Попробуй на TabContextMenu.contextTab.linkedBrowser.currentURI.spec

Спасибо огромное! Работает как надо!!!

Dumby пишет
MDM пишет

Кнопки, помещенные в новое меню Firefox 29, не инициализируются, пока не откроешь это меню. Кто-нибудь в курсе, это чинится?

№30.

Спасибо. Работает и ладно. :)

rgdru пишет

А у меня вот так.

Попробуй замену. Рестарт.

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

Выделить код

Код:

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%3ECompact%20Menu%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBEAAAEAIACsBAAAFgAAACgAAAAQAAAAIgAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAMSAAcROg8hOGEvQV1hL0JdOQ4iOBIABxH7+/uBqKioqv7+/oAAAAAAAAAAAAAAAAAAAAAAAAAAAREABhB6PEx23HZ32+uLe/7rfGv/63tr/+uKev7vv7/tp52g10BAQP6vr6+z////fwAAAAAAAAAAAAAAAR0CEB3AaHK/629j/+FbVP/bUU7/10xK/9ZLSv/sp6X/26mm/0BAQP9AQED/QEBA/9jY2KH///9/AAAAAA8ABQ+6X22+1UpK/8Y2P/+8KDX/tB0v/6sZKf+uGCz/1pae/0BAQP9AQED/QEBA/0BAQP9AQED+8fHxkQAAAAJ0M0hzxz1G/7AYLv+lDCX/ng0b/5APD/+FFgL/1Zid/3BfYf9AQED/QEBA/0BAQP9AQED/QEBA/25ubtgPAAUPt0dc2KULJf+pFCb/tygu/7w1L/+FGAH/nSsW/8OSjf+gf3//qIKB/9aTlf/Vi5P/0YSR/9yosuzw7/CHMAobMLw2Sf60Iyz/xD41/9NSPv/cYUT/0188/+VwSf/IWzj/WhID/0kFAP9zGhT/yEM4/7grL/+9Okn+Nw0fNFYoOVLAOT3/zEg6/9xhRP/qdUv/64RR/+uNVf/rk1f/65NX/9t1Q/9mGQD/YhcE/9NeP//RTz3/xEA//1wsPVlWKDhR01dI/+BnRv/rf0//65JX/+ugXP/rqV7/661g/+utYf/McDH/gS4C/4UyD//CXjX/5G5I/9hdSf9dLD5YMAoaMOp+Zf7rgE//65dZ/+upX//rtGP/671n/+vBaP/rslz/rk4K/51CBf/rjUf/64RI/+uBTf/rhGf+NQweNA4ABg7Tdm3X65NY/+uqX//rumX/68Rq/+vMbf/r0G//68pn/+u+X//cgTD/67hi/+uuYf/rmlr/2Hxv2REABhAAAAACdTlIceudYP/rrV7/66xW/+vMbf/r03D/69Zw/+vVcP/r1HD/68tr/9x+Pv/rkUz/66xo/3Y7SXMAAAACAAAAAA8ABQ+2Z2O70WIX/+uEIf/rvVb/68JY/+vPbf/rsUn/68FX/+uVRf+dNBL/zGw0/8h7dL0PAAUPAAAAAAAAAAAAAAABHAEPHL5qWrzrr0r/69CA/+vQgf/r3qv/696r/+vNgP/rrnb/rEgo/6VXW70dAg8cAAAAAQAAAAAAAAAAAAAAAAAAAAEPAAUPdztFceiUcNjrz47+69yw/+vUmf/ryIT+03pe2XIzRHMPAAUPAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIPAAUPMgscMlcpOlNYKTlUMwscMg8ABQ8AAAACAAAAAAAAAAAAAAAAAAAAAP//rEHwA6xBwAGsQYAArEGAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEGAAaxBgAGsQcADrEHwD6xB%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bif%20%28gBrowser.currentURI.spec%20%3D%3D%20%22about%3Acustomizing%22%29%20return%3B%0A%0Avar%20mmb%20%3D%20document.getElementById%28%22main-menubar%22%29%3B%0Ammb.collapsed%20%3D%20true%3B%0AaddDestructor%28%28%29%20%3D%3E%20mmb.collapsed%20%3D%20false%29%3B%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bif%20%28event.target%20%26%26%20event.target%20%21%3D%20this%29%20return%3B%0Aif%20%28%21event.target%20%26%26%20this.lastChild%20%26%26%20this.lastChild.state%20%3D%3D%20%22open%22%29%20%7B%0A%09this.lastChild.hidePopup%28%29%3B%20return%3B%0A%7D%0Avar%20ids%20%3D%20%5B%0A%09%22file-menu%22%2C%0A%09%22edit-menu%22%2C%0A%09%22view-menu%22%2C%0A%09%22bookmarksMenu%22%2C%0A%09%22history-menu%22%2C%0A%09%22tools-menu%22%2C%0A%09%22helpMenu%22%0A%5D%3B%0Avar%20menus%20%3D%20ids.map%28id%20%3D%3E%20document.getElementById%28id%29%29%3B%0Avar%20menubar%20%3D%20menus%5B0%5D.parentNode%3B%0Avar%20order%20%3D%20Array.slice%28menubar.childNodes%29%3B%0A%0Afunction%20appendMenus%28parent%29%20%7B%0A%09var%20nodes%20%3D%20parent%20%3D%3D%20menubar%20%3F%20order%20%3A%20menus%3B%0A%09for%28var%20node%20of%20nodes%29%20parent.appendChild%28node%29%3B%0A%09if%20%28ids.indexOf%28%22bookmarksMenu%22%29%20%3D%3D%20-1%29%20return%3B%0A%09for%28var%20menu%20of%20parent.getElementsByTagName%28%22menu%22%29%29%20%7B%0A%09%09if%20%28%21menu._placesView%29%20continue%3B%0A%09%09menu._placesView.uninit%28%29%3B%0A%09%09delete%20menu._placesView%3B%0A%09%7D%0A%7D%0Athis.textContent%20%3D%20%22%22%3B%0Avar%20popup%20%3D%20this.appendChild%28document.createElement%28%22menupopup%22%29%29%3B%0Apopup.position%20%3D%20%22after_start%22%3B%0Apopup.id%20%3D%20%22cb-compact-menu-menupopup%22%3B%0Apopup.setAttribute%28%22context%22%2C%20%22toolbar-context-menu%22%29%3B%0Apopup.__defineGetter__%28%22parentNode%22%2C%20%28%29%20%3D%3E%20null%29%3B%0A%0Apopup.addEventListener%28%22popuphidden%22%2C%20function%20onPH%28e%29%20%7B%0A%09if%20%28e.originalTarget%20%21%3D%20this%29%20return%3B%0A%09popup.removeEventListener%28%22popuphidden%22%2C%20onPH%2C%20false%29%3B%0A%09appendMenus%28menubar%29%3B%0A%7D%2C%20false%29%3B%0A%0AappendMenus%28popup%29%3B%0Apopup.openPopup%28this%29%3B%0A%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Dumby
Сейчас все нормально.Спасибо!
e91336099be8b051036bdca8d886bb3f.jpeg

есть ли у нас способ объеденить эти 2 кнопки в одну?
https://forum.mozilla-russia.org/viewto … 90#p416590

okkamas_knife пишет

а поконкретнее?
что именно нужно то?

идея состоит в скрытии кнопок вперед/назад и обновить/остановить и создании их аналогов

и есть у нас пример кнопки со сменой изображения, (невозможность перехода)?

Выделить код

Код:

var url="javascript:history.go(-1)";
loadURI (url);

Поправьте если можно Relative tabs, а то он перестал корректно работать

okkamas_knife пишет

мог бы и сам поправить раз уж сидишь на новых версиях.
там делов то было картинку поменять да исправить код убрав e4x патчем от Infocatcher что в заглавном посте готовых.

спасибо, а то на форуме такая вырвиглазная вещь встретилась =) http://custombuttons.sourceforge.net/fo … f=4&t=1242

Pony_Smile_Pack пишет

Поправьте если можно Relative tabs, а то он перестал корректно работать

Выделить код

Код:

// Открывать любую новую вкладку справа от текущей, от 08.04.2014. ................................ 
addEventListener("TabOpen", function(e) {
   var newTab = e.target;
   var lab = newTab.label; 
   var tabpos = gBrowser.selectedTab._tPos;
   var newTabLab = gBrowser.mStringBundle.getString("tabs.emptyTabTitle");  

   if ( tabpos == 0 && lab == newTabLab ) return;      // если восстановление сессии 
   if ( new Error().stack.indexOf("openContainer") !== -1 ) return;   // если открыть всё во вкладках из папки закладок  
   
   lab == newTabLab
   ? setTimeout(function() gBrowser.moveTabTo( e.target, tabpos + 1 ), 50) // если восстановление вкладки
   : gBrowser.moveTabTo( e.target, tabpos + 1 );
   
   // автоматически закрывать "custombutton" вкладку
   if ( lab.startsWith("custombutton://%") ) setTimeout(function() gBrowser.removeTab( newTab ), 0);

}, false, gBrowser.tabContainer );

Спасибо, bunda1.

подскажите как работать с  группами вкладок в FF 29.0.1 ? ссылку на документацию бы :)
хочу сделать чтоб по нажатию появлялось список групп вкладок и можно было быстро переключиться.
--
так пока нагуглил расширение

Попробовал открывать новую пустую вкладку и вроде без проблем. А как ты открываешь пустую вкладку?

[поправочка, я тут жаловался на Relative tabs, но это я её просто положил в панель-кнопку]

19-05-2014 22:45:57
сейчас вроде всё хорошо
ещё раз спасибо

:)

Поправьте плз кнопочку Make bookmark button. Не вставляется автоматом иконка страницы и после перезагрузки кнопка-страница исчезает. Если присвоить свою иконку, то остается.
Спасибо.

Uxapb пишет

Поправьте плз кнопочку Make bookmark button. Не вставляется автоматом иконка страницы и после перезагрузки кнопка-страница исчезает. Если присвоить свою иконку, то остается.
Спасибо.

Создать кнопку ярлык для сайта

bunda1 пишет

Создать кнопку ярлык для сайта

Разместил кнопку на Панеле Закладок, нащелкал кнопок. Иконки присваиваются, но после перезагрузки кнопки пропадают с панели.
Они должны оставаться на панели только на сессию или это баг ? Из браузера кнопки не пропадают и их можно потом опять вернуть на панель. После возврата прописываются на постоянку.

Uxapb пишет

но после перезагрузки кнопки пропадают с панели.

Скорее всего, поможет
Fix for "Clone button" feature on Firefox 29+ (Australis)

02-06-2014 16:25:52
И есть официальная тестовая версия:
http://custombuttons.sourceforge.net/fo … 9285#p9285
=> https://sourceforge.net/projects/custombuttons/files/

custombuttons-0.0.5.8pre.xpi решило проблемку. Спасибо.

bunda1
В 31-й перестала работать Memory Monitor - двоится значение.
А если ещё стоит Показывать количество открытых табов в адресной строке+, то значение количества табов "прилипает" к значению Memory Monitor. Или к значку dropdown history в адресной строке.
Если можно сделать и не затруднит, поправь, пожалуйста.

На FF31 у меня всё порядке, но попробуй добавить:

Выделить код

Код:

if ( document.getElementById('memoryDisplay') ) return;

в коде Memory Monitor перед:

Выделить код

Код:

// Создать в адресной строке счётчик памяти ....
var memoryDisplay = document.createElement("statusbarpanel");

Также можно в коде Memory Monitor в строке:

Выделить код

Код:

memoryDisplay.style.cssText = "-moz-appearance: none; border: 0; min-width: 5.5em; text-align: right;"; // Css стиль для счётчика

или в коде Показывать количество открытых табов в адресной строке+ под строками:

Выделить код

Код:

// Стиль для счётчика и меню ....
var uri = makeURI('data:text/css,'+ encodeURIComponent('\

добавить нужний тебе отступ margin

На дефолтном профиле действительно всё нормально.
Но с приложениями и стилями...

Выделить код

Код:

if ( document.getElementById('memoryDisplay') ) return;

Это код помог.
С Margin я разберусь, но вот посмотри: если выводятся обе кнопки, то это расширение их "разрывает".
Хотя это не важно, просто для информации. Спасибо.

xrun1 пишет

С Margin я разберусь, но вот посмотри: если выводятся обе кнопки, то это расширение их "разрывает".
Хотя это не важно, просто для информации. Спасибо.

Спасибо, я это учту. Кстати RSS иконку в адресную строку можно передвинуть Сustom Buttons кодом.
И похоже что у тебя стоят два Memory Monitor.

bunda1 пишет

И похоже что у тебя стоят два Memory Monitor.

Если удаляю код из кнопки - значение в адресной строке исчезает. Но перепроверил все кнопки на всякий случай. Memory Monitor точно один.
Иногда бывает одно значение, потом вдруг раз - появилось второе. Закономерности не выявил. Это не только у меня, кстати.

Кстати RSS иконку в адресную строку можно передвинуть Сustom Buttons кодом.

Это для меня слишком сложно и стандартная скучная серая. ))
P.S. Сейчас работает правильно и без изменения кода. Закономерности не видно...

xrun1
А версия Сustom Buttons какая.

bunda1
0.0.5.8
После того, как написал предыдущий пост опять задвоилось. С изменением нормально.

А я не знал что есть 0.0.5.8, а сам Сustom Buttons почему то не обновляется. А глюк Memory Monitor не понятный, но я добавлю if ( document.getElementById('memoryDisplay') ) return;  в Memory Monitor
Спасибо за информацию

bunda1 пишет

А я не знал что есть 0.0.5.8, а сам Сustom Buttons почему то не обновляется.

Как оказалось уже и custombuttons-0.0.5.9pre1-20140622 есть №13222

Всем привет, помогите с кнопкой, пожалуйста (
Есть дополнение Update Scanner.
хочется в один клик проверять сайты на изменения.
8184559d447c0b3e169651e03db88cd7.png
нужна кнопка, при нажатии которой выполняется функция кнопки "Сканировать"
Спасибо.

ps
пытался Атрибут инспектором, но что то не получается (

firepox пишет

нужна кнопка, при нажатии которой выполняется функция кнопки "Сканировать"

По-видимому, без открытия боковой панели не обойтись.

Выделить код

Код:

var sidebar = document.getElementById("sidebar");
function scan() {
    sidebar.contentWindow.USc_updatescan.scanButtonClick();
}
toggleSidebar("viewUpdateScanSidebar", true);
if(
    sidebar.getAttribute("src") == "chrome://updatescan/content/updatescan.xul"
    && sidebar.contentDocument.readyState == "complete"
) {
    scan();
}
else {
    sidebar.addEventListener("load", function onLoad(e) {
        sidebar.removeEventListener(e.type, onLoad, true);
        scan()
    }, true);
}

Infocatcher
Огромное спасибо!
Все работает.

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

okkamas_knife
спасибо, но вообще ничего не происходит при нажатии на кнопку.
ладно, спасибо большое всем за помощь.
успехов!

firepox пишет

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

Только надо иметь в виду, что преждевременное закрытие прервет проверку.

Выделить код

Код:

var sidebar = document.getElementById("sidebar");
if(
    sidebar.boxObject.width
    && sidebar.getAttribute("src") == "chrome://updatescan/content/updatescan.xul"
) {
    toggleSidebar();
}
else {
    toggleSidebar("viewUpdateScanSidebar", true);
    var scan = function() {
        sidebar.contentWindow.USc_updatescan.scanButtonClick();
    };
    if(
        sidebar.getAttribute("src") == "chrome://updatescan/content/updatescan.xul"
        && !sidebar.webProgress.isLoadingDocument
    ) {
        scan();
    }
    else {
        sidebar.addEventListener("load", function onLoad(e) {
            sidebar.removeEventListener(e.type, onLoad, true);
            scan();
        }, true);
    }
}

В предыдущем коде «sidebar.contentDocument.readyState == "complete"» тоже лучше заменить на «!sidebar.webProgress.isLoadingDocument».

okkamas_knife пишет

попробуй строчку
var sidebar = document.getElementById("sidebar");
перенести в самое начало кода

Не, там проблема в том, что в Firefox у кнопки закрытия нет идентификатора.
И если не ставить никаких расширений, то используется hidden, а не collapsed.
Так что проверка на вычисленную ширину (sidebar.boxObject.width) более универсальная.

Infocatcher
Спасибо! то что надо, супер!
okkamas_knife
и Вам спасибо!

okkamas_knife пишет

я то наивный думал что хоть с сайдбаром у них одинаково..

Не-а, там как раз полно отличий, из-за этого даже некий xSidebar есть:
http://xsidebar.mozdev.org/
https://addons.mozilla.org/seamonkey/addon/xsidebar/
http://forums.mozillazine.org/viewtopic … 8&t=568392

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

было бы еще лучше )

firepox пишет

добавить возможность авто-закрытия боковой панели:
если нет изменений - панель закрывается.
если есть, то не закрывается.

Все-таки есть там код для проверки без боковой панели.

Выделить код

Код:

// See chrome://updatescan/content/autoscan.js and chrome://updatescan/content/updatescan.js
// Like USc_autoscan._check(), but check all items like USc_updatescan.scanButtonClick()
var me = USc_autoscan;
me.scan = new USc_scanner();
me.numChanges = 0;
if(me.scan.addItems(USc_places.getRootFolderId(), false /*autoScan*/) > 0) {
    me.scan.start(
        me._scanChanged,
        function onFinished() {
            me._scanFinished();
            if(me.numChanges) {
                toggleSidebar("viewUpdateScanSidebar", true);
            }
            else {
                var str = document.getElementById("updatescanStrings");
                window.openDialog(
                    "chrome://updatescan/content/alert.xul",
                    "alert:alert",
                    "chrome,dialog=yes,titlebar=no,popup=yes",
                    str.getString("statusNoChanges")
                );
            }
        },
        me._scanProgress,
        me._encodingChanged
    );
}

Infocatcher
Класс!
Спасибо!

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

30-07-2014 21:07:50
извините, сам понял как сделать.

помогите плиз! как сделать чтоб при запуске лисы у иконки была картинка (1) а после переключения (2)?

Где то видел кнопку для запаролевания firefox-не могу найти.Ткните плиз.

okkamas_knife
Да,оно-благодарю!

Можно ли сделать кнопку, которая по длинному левому клику на вкладку в таббаре делала бы перезагрузку (reload, refresh) этой вкладки, а по короткому, как обычно - делала бы эту вкладку активной (как сейчас)?

difabor пишет

Можно ли сделать кнопку, которая по длинному левому клику на вкладку в таббаре делала бы перезагрузку (reload, refresh) этой вкладки, а по короткому, как обычно - делала бы эту вкладку активной (как сейчас)?

Выделить код

Код:

(function f() { 
   const tabbrowser = gBrowser.mTabContainer;
   
   addEventListener("click", function(e) {
      if ( e.button || e.target.nodeName !== "tab" || (Date.now() - f.mouseDownTime) < 600 ) return;
           BrowserReload();
   }, true, tabbrowser );
   
   addEventListener("mousedown", function() f.mouseDownTime = Date.now(), true, tabbrowser ); 
})();

или:

Выделить код

Код:

function tabLongPress(e) {
  if ( e.button || e.target.nodeName !== "tab" ) return;
       
  if ( e.type == "mousedown" ) 
       tabLongPress.time = Date.now(), e.stopPropagation();       
  else
       Date.now() - tabLongPress.time > 600 ? gBrowser.reloadTab(e.target) : gBrowser.selectedTab = e.target;
}; 
["click", "mousedown"].forEach(function(type) addEventListener(type, tabLongPress, true, gBrowser.mTabContainer ));

а можно :( ?
у меня сейчас вот такой код работает

Выделить код

Код:

//Активизировать вкладку наведением курсора......................
var tab_hover={
   event:null,
   tid:null,

   onLoad: function() {
      gBrowser.tabContainer.addEventListener("mouseout", tab_hover.onMouseOut, false);
      gBrowser.tabContainer.addEventListener("mouseover", tab_hover.onMouseOver, false);
   },
   onUnload: function() {
      gBrowser.tabContainer.removeEventListener("mouseover", tab_hover.onMouseOver, false);
      gBrowser.tabContainer.removeEventListener("mouseout", tab_hover.onMouseOut, false);
   },

   onMouseOver: function(event) {
      tab_hover.event=event.target;
      tab_hover.tid=setTimeout( function(){ gBrowser.selectedTab=tab_hover.event;   } , 450);
   },
   onMouseOut: function() {
      clearTimeout(tab_hover.tid);
   }
};
if (!this.tab_hoverRun) tab_hover.onLoad();
this.tab_hoverRun = true;

можно в него добавить код по короткому левому клику на вкладку в таббаре делала бы перезагрузку (reload, refresh) этой вкладки? спс заранее :blush:

sonyas75 пишет

можно в него добавить код по короткому левому клику на вкладку в таббаре делала бы перезагрузку (reload, refresh) этой вкладки? спс заранее :blush:

Добавлять не надо, будет работать вместе с твоим кодом:

Выделить код

Код:

addEventListener("click", function(e) {
   if ( e.button == 0 && e.target.nodeName == "tab" ) BrowserReload();
}, true, gBrowser.mTabContainer );

Кстати, советую заменить твой код на:

Выделить код

Код:

// Активизировать вкладку наведением курсора, если 'Панель меню' закрыт ................................
(function () { 
   var menubar = document.getElementById('toolbar-menubar');
         
   addEventListener("mouseover", function(e) {
      if ( menubar.getAttribute("autohide") == 'true' && menubar.getAttribute("inactive") ) {
           gBrowser.selectedTab = e.target;
           e.target.setAttribute('read', 'true');
           }                  
   }, false, gBrowser.tabContainer ); 
   
})();

о! премного благодарен :)

И от меня - огромнейшее спасибо!!!

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

Выделить код

Код:

// Активизировать вкладку наведением курсора, если 'Панель меню' закрыт ................................ 
(function () { 
   var menubar = document.getElementById('toolbar-menubar'), dateout = Date.now();
   
   addEventListener("mouseout", function(e) {dateout = Date.now(); }, true, gBrowser.tabContainer ); 
   
   addEventListener("mouseover", function(e) {
      if ( menubar.getAttribute("autohide") == 'true' && menubar.getAttribute("inactive") && (Date.now() - dateout > 500 ) ) {
           gBrowser.selectedTab = e.target;
           e.target.setAttribute('read', 'true');
           }                  
   }, false, gBrowser.tabContainer );
   addEventListener("click", function(e) {
       if ( e.button == 0 && e.target.nodeName == "tab" ) BrowserReload();
   }, true, gBrowser.mTabContainer ); 
   
})();

То есть активизация вкладки происходит по наведению курсора, если курсор "покинул" предыдущую вкладку полсекунды или больше тому назад.
Это помогает при неаккуратном перемещении курсора - случайное цепляние другой вкладки не ведёт к её активации

difabor
Хорошо придумано.

Подскажите, а с помощью CB можно сделать имитацию нажатий клавивиатуры, чтобы не запускать vbscript:

Выделить код

Код:

Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "{F1}"

Кнопочка Clear Cache / Delete flash cookie после обновления до FF32 больше не работает, можно её как-то исправить?

Zaycoff пишет

Кнопочка Clear Cache / Delete flash cookie после обновления до FF32 больше не работает, можно её как-то исправить?

Выделить код

Код:

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%3EClear%20Cache%20/%20Delete%20flash%20cookies%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAExEAAAEAIAB4BQAAFgAAACgAAAATAAAAIgAAAAEAIAAAAAAAUAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwAAAAAAAQEBCxMTEyElJSU/KywrWC4sLWUzMzNrPDs8a0NEQ2MsLCxKDg0PKgABAA8AAAAAAgICAAAAAAAAAAAAAAAAAQAAAAIZGhoHQ0NDUGJiYqZxcXHVcXFx6XNzc/STlJT2t7e2+NDP0Pjb3dz11tbY67GwsNtsbWy0JyYnYQICAg8CAgICAAAAAgICAgUAAAAAJykpJ5CRkM64t7f/q6ut/7m5uf/Lx8b/19bW/9nY2P7a2dz+4d/g/+rq6P/r7Or/1NTU/3V1ddkKCwo+AQEBAQEBAQQCAgIDAAABARMTEhdubmy/rq6w/snIyfbj4+H94uXn/d/l7f3W2+X9xc3R/a20u/2oqKr9paWi96Wmpf5ubW3NFRMTNgAAAA4BAQEJAQIBAQICAgUAAQUBhY6UpuDi5f7b2Nj609ng/rfB1v+ssc3/wcja/6qyx/99hqL/iZOr/rW4vfrZ2Nf+io2VuQQHDiICAgETAQEBBgIDBAIDAgEDAQoSAau8wq3/////4Oft+tzm7v7d4On/q6zJ/0tLoP9cXKb/tbXM/9Hb5v7f5/H6/////7K6wrYBDRkNAwEABQICAQECAwQCAQIBAggNEQest7+4+v7+/8rY6Pnf5u7++/r6/6OmzP9kZa//aGmu/8rN4//7+vv/3Obr+Pn9/f+/wsK7ChIWDAIBAQECAwMDAwQEBAEBAQINFhgPprXAvPb////K1OT5vcDX/6SlzP+Bg7z/5ebu/7S11P9+gbv/l5jE/7G60fj1/P7/w8TIwBYYIRcAAQEBBAQEBAQEBQQCAAAAESIsGbTGzMH5////5u70+dTW6P+Dg7//gIC//8PD3f+gocr/OTyf/3J0t/+/xd349P7//73EzsYgIy8hAAAAAAQEBAQEBAUEAAAAABoiLSLAyszH+f///9/q9vj0+Pz/2Nfp/7e32P+9vtz/ubvX/25vtP+/weD/5/D1+Pb////AytHLJSw3KwAAAAAEBAUFBAQFBQAAAAAgKzQrvsvOyvb+/v/I2e/42ef3//L19v/p6Ov//vv7//Hy8v/Jydv/1ODu/97r9Pj9/v//zdHY0C44RjgAAAAABAUFBQQFBQUAAAAAKzpJN8TV2dD4/v7/1Oj++NDq///Q6P7/4PH//+Pw/v/U5fb/xt3z/8Tc9f/X5/f4//7//9PX29c3QktFAAAAAAUFBQUEBQUFAAAAADE5Rj7G09rT8Pr7/8PV6fi60eX/q8ff/63G4P+uxt//s8vl/7PN6//F2fD/0N/r+Pr8/P/W3+TaP09aSwAAAAAFBQUFBAUFBQAAAAA4PUhRqrW/3bK6wP57gIn2cXeD/nh+gv2Rlpf9rrKz/crNz/3c4eT94uft/tDU2/bX2dr+tL3F4kJNWl0AAAAABAUGBgMDAwYAAAAAX15jfq+vsvqjpqb/mJ2f/qmyt/+vvMP+u8nT/8jT3f/R3Ob/2OTs/97l7P/N0dX+wsLE/62usP5WV1uLAAAAAAIDBAUDAwMEAAAAAEdGRkqJiYi6mZma57CztO/Q1tr20tni98PL1vettb/3maGs94uSnfeIjpL3iY2M8ZycnOmZmJfDTUtMVgAAAAACAgIDAAAAAAAAAAAEBAUBDxEQEickJCtAODtEVlFTW2RjZGljYl9yXVxadVdWVHNRUFNqR0RHXT03NkcpJyctFBUWEwgHCAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA%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%20%20%20%20%20if%20%28%20e.button%20%29%20return%3B%0A%20%20%20%20%20%0A%20%20%20%20%20//%20%u043E%u0447%u0438%u0441%u0442%u0438%u0442%u044C%20%u043A%u044D%u0448%20....%0A%20%20%20%20%20try%20%7B%20%0A%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_IN_MEMORY%29%3B%0A%20%20%20%20%20%20%20%20%20Services.cache.evictEntries%28Ci.nsICache.STORE_ON_DISK%29%3B%0A%20%20%20%20%20%20%20%20%20%7D%20%0A%20%20%20%20%20catch%28e%29%20%7B%20Services.cache2.clear%28%29%20%7D%0A%0A%20%20%20%20%20//%20%u0423%u0434%u0430%u043B%u0438%u0442%u044C%20Flash%20%u043A%u0443%u043A%u0438%u0441%u0438%20....%0A%20%20%20%20%20var%20dir%20%3D%20Cc%5B%22@mozilla.org/file/directory_service%3B1%22%5D.getService%28Ci.nsIProperties%29.get%28%22Home%22%2C%20Ci.nsIFile%29%3B%0A%20%20%20%20%20dir.append%28%22Application%20Data%22%29%3B%0A%20%20%20%20%20dir.append%28%22Macromedia%22%29%3B%0A%20%20%20%20%20if%20%28%20dir.exists%28%29%20%29%20dir.remove%28true%29%3B%0A%20%20%20%20%20if%20%28%20%21dir.exists%28%29%20%29%20dir.create%28Ci.nsIFile.DIRECTORY_TYPE%2C%200777%29%3B%0A%0A%20%20%20%20%20//%20%u0412%u0441%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0435%u0435%20%u0441%u043E%u043E%u0431%u0449%u0435%u043D%u0438%u0435%20....%0A%20%20%20%20%20const%20alertsService%20%3D%20Cc%5B%22@mozilla.org/alerts-service%3B1%22%5D.getService%28Ci.nsIAlertsService%29%3B%0A%20%20%20%20%20alertsService.showAlertNotification%28self.image%2C%20self.label%2C%20%27%u041E%u0447%u0438%u0441%u0442%u0438%u043B%20%u043A%u0435%u0448%20%u0438%20%u0443%u0434%u0430%u043B%u0438%u043B%20Flash%20%u043A%u0443%u043A%u0438%u0441%u0438%27%2C%20false%2C%20%22%22%2C%20null%2C%20%22%22%29%3B%0A%0A%7D%3B%0A%0A%0A//%20%u0421%u043F%u043B%u044B%u0432%u0430%u044E%u0449%u0430%u044F%20%u043F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438%20....%0A%28function%28%29%20%7B%0A%20%20%20%20var%20title%20%3D%20self.label%20+%20%22%3A%5Cn%5Cn%22%3B%0A%20%20%20%20var%20data%20%3D%20%7B%0A%20%20%20%20%20%20%20%20memory%3A%20%22Memory%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20%20disk%3A%20%22Disk%20Cache%3A%20%20%22%2C%0A%20%20%20%20%20%20%20%20offline%3A%20%22Offline%20Cache%3A%20%20%22%0A%20%20%20%20%7D%3B%0A%20%20%20%20function%20getSize%28size%29%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%21size%29%20return%20size%20%3D%3D%3D%200%20%3F%20%220%22%20%3A%20%22%3F%22%3B%0A%20%20%20%20%20%20%20%20for%28var%20count%20%3D%20-1%3B%20size%20%3E%3D%201024%3B%20size%20/%3D%201024%2C%20count++%29%3B%0A%20%20%20%20%20%20%20%20return%20size.toFixed%282%29.replace%28/0+%24/%2C%20%22%22%29.replace%28/%5C.%24/%2C%20%22%22%29%20+%20%22%20%22%20+%20%28%22KMGT%22%5Bcount%5D%20%7C%7C%20%22%22%29%20+%20%22B%22%3B%0A%20%20%20%20%7D%0A%20%20%20%20function%20setInf%28tot%2C%20max%2C%20type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20var%20inf%20%3D%20getSize%28tot%29%20+%20%22%20/%20%22%20+%20getSize%28max%29%3B%0A%20%20%20%20%20%20%20%20var%20key%20%3D%20%22browser.cache.%22%20+%20type%20+%20%22.enable%22%3B%0A%20%20%20%20%20%20%20%20if%20%28%21Services.prefs.getBoolPref%28key%29%29%20inf%20+%3D%20%22%20%28disabled%29%22%3B%0A%20%20%20%20%20%20%20%20self.tooltipText%20%3D%20self.tooltipText.replace%28zws%28i%29%2C%20inf%29%3B%0A%20%20%20%20%7D%0A%20%20%20%20function%20zws%28ind%29%20%22%5Cu200B%5Cu200B%5Cu200B%22.slice%280%2C%20++ind%29%3B%0A%0A%20%20%20%20var%20types%20%3D%20Object.keys%28data%29%3B%0A%20%20%20%20var%20ttt%20%3D%20title%20+%20types.map%28function%28key%2C%20i%29%20data%5Bkey%5D%20+%20zws%28i%29%29.join%28%22%5Cn%22%29%3B%0A%0A%20%20%20%20self.onmouseenter%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20self.tooltipText%20%3D%20ttt%3B%0A%20%20%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20entries%20%3D%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20Services.cache.visitEntries%28%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitDevice%3A%20function%28device%2C%20info%29%20entries%5Bdevice%5D%20%3D%20info%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20visitEntry%3A%20function%28%29%20%7B%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20info%20%3D%20entries%5Btype%5D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28info%20%26%26%20info.totalSize%2C%20info%20%26%26%20info.maximumSize%2C%20type%2C%20i%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Services.cache2%20%26%26%20types.forEach%28function%28type%2C%20i%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20func%20%3D%20function%28aEntryCount%2C%20aConsumption%2C%20aCapacity%2C%20aDiskDirectory%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setInf%28aConsumption%2C%20aCapacity%2C%20type%2C%20i%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20storage%20%3D%20Services.cache2%5B%28type%20%3D%3D%20%22offline%22%20%3F%20%22app%22%20%3A%20type%29%20+%20%22CacheStorage%22%5D%28%7B%7D%2C%20null%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20try%20%7B%20storage.asyncVisitStorage%28%7BonCacheStorageInfo%3A%20func%7D%2C%20false%29%20%7D%20catch%28ex%29%20%7B%7D%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%3B%0A%7D%29%28%29%3B%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%0A%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

bunda1
Большое спасибо! =)

День добрый. Есть кнопочка CB Mouse Gestures+ (мне её на делали для изменения масштаба страницы ПКМ+колёсико) помогите добавить сброс масштаба по ПКМ+ЛКМ.

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

Выделить код

Код:

// Объявляем переменные для этой вкладки ................................
var _this = this;
var alertsService = Components.classes["@mozilla.org/alerts-service;1"].getService(Components.interfaces.nsIAlertsService);
var bmsvc = Components.classes["@mozilla.org/browser/nav-bookmarks-service;1"].getService(Components.interfaces.nsINavBookmarksService);


var ucjsMouseGestures = {

   // настройки ....
   enableWheelGestures: true,
   enableRockerGestures: true,
   enablePopupGestures: true,

   _lastX: 0,
   _lastY: 0,
   _directionChain: '',
   _isMouseDownL: false,
   _isMouseDownR: false,
   _hideFireContext: false,    //for windows
   _shouldFireContext: false, //for linux
   POPUP_ID: 'GesturePopup',
   
   // Жесты ....
   GESTURES: {
           
// Управление страницей ................................
  'W-':{name:'Увеличить масштаб',cmd:function(){ FullZoom.enlarge() }},
  'W+':{name:'Уменьшить масштаб',cmd:function(){ FullZoom.reduce() }},
  'UDU':{name:'Сбросить масштаб',cmd:function(){ FullZoom.reset() }},
},

init:function() {
    var self = this;
    var events = ["mousedown", "mousemove", "mouseup", "contextmenu"];
    if ( this.enableRockerGestures ) events.push("draggesture");
    if ( this.enableWheelGestures ) events.push("DOMMouseScroll");
    function registerEvents( aAction, eventArray ) {
       eventArray.forEach(function(aType) { gBrowser.mPanelContainer[aAction + "EventListener"]( aType, self, true ) });
    };
    registerEvents("add", events);

    window.addEventListener("unload", function() { 
           registerEvents("remove",events);
    }, false );
    addDestructor(function() { registerEvents("remove", events) }); 
},

handleEvent:function( event ) {
    switch( event.type ) {
        case"mousedown":
            if ( event.button ==2 ) {
                 this._isMouseDownR = true;
                 this._hideFireContext = false;
                 this._startGesture( event );
                 }
            if ( this.enableRockerGestures ) {
                 if ( event.button == 2 && this._isMouseDownL ) {
                      this._isMouseDownL = false;
                      this._isMouseDownR = false;
                      this._shouldFireContext = false;
                      this._hideFireContext = true;
                      this._directionChain = "L>R";
                      this._stopGesture(event);
                      }
                 else if ( event.button == 0 ) {
                           this._isMouseDownL = true;
                           if ( this._isMouseDownR ) {
                                this._isMouseDownL = false;
                                this._shouldFireContext = false;
                                this._hideFireContext = true;
                                this._directionChain = "L<R";
                                this._stopGesture( event );
                                }
                           }
                 }
                break;

        case"mousemove":
            if ( this._isMouseDownR ) {
                 this._hideFireContext = true;
                 this._progressGesture( event );
                 }
            break;

        case"mouseup":
            if ( content.xdTrailArea ) {
                 content.xdTrailArea.parentNode.removeChild( content.xdTrailArea );
                 content.xdTrailArea = content.document.documentElement.appendChild(document.createElementNS("http://www.w3.org/1999/xhtml", "xdTrailArea"));
                 }
            if ( event.ctrlKey && event.button == 2 ) {
                 this._isMouseDownL = false;
                 this._isMouseDownR = false;
                 this._shouldFireContext = false;
                 this._hideFireContext = false;
                 this._directionChain = '';
                 event.preventDefault();
                 XULBrowserWindow.statusTextField.label = "Reset Gesture";
                 break;
                 }
            if ( this._isMouseDownR && event.button == 2 ) {
                 if ( this._directionChain ) this._shouldFireContext = false;
                      this._isMouseDownR = false;
                      this._stopGesture( event );
                 if ( this._shouldFireContext && !this._hideFireContext ) {
                      this._shouldFireContext = false;
                      this._displayContextMenu( event );
                      }
                 }
            else if ( this.enableRockerGestures && event.button == 0 && this._isMouseDownL ) { 
                      this._isMouseDownL = false;
                      this._shouldFireContext = false;
                      }
            else if ( this.enablePopupGestures && ( event.button == 0 || event.button == 1 ) && event.target.localName =='menuitem' ) {
                      this._isMouseDownL = false;
                      this._shouldFireContext = false;
                      var popup = document.getElementById( this.POPUP_ID );
                      var activeItem = event.target;
                  
                      switch( popup.getAttribute("gesturecommand") ) {
                          case"WebSearchPopup":
                              var selText = popup.getAttribute("selectedtext");
                              var engine = activeItem.engine;
                              if ( !engine ) break;
                              var submission = engine.getSubmission( selText, null );
                              if ( !submission ) break;
                              document.getElementById('searchbar').textbox.value = selText;
                              gBrowser.loadOneTab( submission.uri.spec,null,null,submission.postData,null,false );
                              break;
                          case"ClosedTabsPopup":
                              undoCloseTab( activeItem.index );
                              break;
                          case"HistoryPopup":
                              gBrowser.webNavigation.gotoIndex( activeItem.index );
                              break;
                          case"AllTabsPopup":
                              gBrowser.selectedTab = gBrowser.mTabs[activeItem.index];
                              break;
                          }
                      popup.hidePopup();
                      }
            try { document.getElementById("statusbar-display").label = "" } catch(e) {};
            break;
        
        case"popuphiding":
            var popup = document.getElementById( this.POPUP_ID );
            popup.removeEventListener("popuphiding",this,true);
            document.documentElement.removeEventListener("mouseup",this,true);
            while( popup.hasChildNodes() ) popup.removeChild( popup.lastChild );
            break;

        case"contextmenu":
            if ( this._isMouseDownL || this._isMouseDownR || this._hideFireContext ) {
                 event.preventDefault();
                 event.stopPropagation();
                 this._shouldFireContext = true;
                 this._hideFireContext = false;
                 }
            break;

        case"DOMMouseScroll":
            if ( this.enableWheelGestures&&this._isMouseDownR ) {
                 event.preventDefault();
                 event.stopPropagation();
                 this._shouldFireContext = false;
                 this._hideFireContext = true;
                 this._directionChain = "W" + ( event.detail > 0 ? "+" : "-" );
                 this._stopGesture(event);
                 }
             break;

        case"draggesture":
            this._isMouseDownL = false;
            break;
        }
},

_displayContextMenu:function( event ) {
    var evt = event.originalTarget.ownerDocument.createEvent("MouseEvents");
    evt.initMouseEvent("contextmenu",true,true,event.originalTarget.defaultView,0,event.screenX,event.screenY,event.clientX,event.clientY,false,false,false,false,2,null);
    event.originalTarget.dispatchEvent(evt);
},

_startGesture:function( event ) {
    this._lastX = event.screenX;
    this._lastY = event.screenY;
    this._directionChain = "";
},

_progressGesture:function( event ) {
    var x = event.screenX, y = event.screenY;
    var lastX = this._lastX, lastY = this._lastY;
    var subX = x-lastX, subY=y-lastY;
    var distX = ( subX > 0 ? subX : (-subX) ), distY = ( subY > 0 ? subY : ( -subY ) );
    var direction;
    if ( distX < 10 && distY < 10 ) return;
        
        if ( distX > distY ) direction = subX < 0 ? "L" : "R";
    else direction = subY < 0 ? "U" : "D";

    var dChain = this._directionChain;
    if ( direction !== dChain.charAt( dChain.length-1 ) ) {
         dChain += direction;
         this._directionChain += direction;
         var gesture = this.GESTURES[dChain];
         XULBrowserWindow.statusTextField.label = "Жест мыши: "+ dChain + ( gesture ? ' ('+ gesture.name +')' : '' );
         }
    this._lastX = x;
    this._lastY = y;
},

_stopGesture:function(event){
    try {
        if ( dChain = this._directionChain ) this.GESTURES[dChain].cmd( this, event );
        XULBrowserWindow.statusTextField.label = "";
    }
    catch(e) {
             setTimeout(function() { XULBrowserWindow.statusTextField.label = "Неизвестный жест мыши: " + dChain }, 0);
             setTimeout(function() { XULBrowserWindow.statusTextField.label = "" }, 600);
    }
    this._directionChain = "";
},

_buildPopup:function( event,gestureCmd ) {
    if ( !this.enablePopupGestures ) return;
    var popup = document.getElementById( this.POPUP_ID );
    if ( !popup ) {
         popup = document.createElement("popup");
         popup.id = this.POPUP_ID;
         }
    document.getElementById("mainPopupSet").appendChild( popup );
    popup.setAttribute("gesturecommand", gestureCmd );
    
    switch( gestureCmd ) {
        case"WebSearchPopup":
            var searchSvc = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService);
            var engines = searchSvc.getVisibleEngines({});
            if ( engines.length < 1 ) throw"Поисковые системы не установлены.";
            for ( var i = engines.length - 1; i >= 0;--i ) {
                  var engine = engines[i];
                  var menuitem = document.createElement("menuitem");
                  menuitem.setAttribute("label", engine.name );
                  menuitem.setAttribute("class", "menuitem-iconic");
                  if ( engine.iconURI ) menuitem.setAttribute("src", engine.iconURI.spec );
                  popup.insertBefore( menuitem, popup.firstChild );
                  menuitem.engine = engine;
                  }
            popup.setAttribute("selectedtext", getBrowserSelection().toString() );
            break;
        
        case"ClosedTabsPopup":
            try {
                if ( !gPrefService.getBoolPref("browser.sessionstore.enabled") ) throw"Функция восстановления сессий отключена.";
                }
            catch(e){}
            var ss = Cc["@mozilla.org/browser/sessionstore;1"].getService(Ci.nsISessionStore);
            if ( ss.getClosedTabCount(window) ==0 ) throw"Нет восстанавливаемых вкладок в этом окне.";
            var undoItems = eval("("+ss.getClosedTabData(window)+")");
            for ( var i=0, LEN = undoItems.length; i<LEN; i++ ) {
                  var menuitem=popup.appendChild(document.createElement("menuitem"));
                  menuitem.setAttribute("label",undoItems[i].title);
                  menuitem.setAttribute("class","menuitem-iconic bookmark-item");
                  menuitem.index = i;
                  var iconURL = undoItems[i].image;
                  if ( iconURL ) menuitem.setAttribute("image", iconURL );
                  }
            break;
        
        case"HistoryPopup":
            var sessionHistory = gBrowser.webNavigation.sessionHistory;
            if ( sessionHistory.count<1 ) throw"Нет истории в этой вкладке.";
            var curIdx = sessionHistory.index;
            for ( var i = 0, shc = sessionHistory.count; i < shc; i++ ) {
                  var entry = sessionHistory.getEntryAtIndex(i,false);
                  if ( !entry ) continue;
                  var menuitem = document.createElement("menuitem");
                  popup.insertBefore(menuitem,popup.firstChild);
                  menuitem.setAttribute("label",entry.title);
                  try {
                      var iconURL = Cc["@mozilla.org/browser/favicon-service;1"].getService(Ci.nsIFaviconService).getFaviconForPage( entry.URI ).spec;
                      menuitem.style.listStyleImage = "url("+iconURL+")";
                      }
                  catch(e){}
                  menuitem.index = i;
                  if ( i==curIdx ) {
                       menuitem.style.listStyleImage = "";
                       menuitem.setAttribute("type","radio");
                       menuitem.setAttribute("checked","true");
                       menuitem.className = "unified-nav-current";
                       activeItem = menuitem;
                       }
                  else 
                       {
                       menuitem.className = i< curIdx ? "unified-nav-back menuitem-iconic" : "unified-nav-forward menuitem-iconic";
                       }
            }
            break;
        
        case"AllTabsPopup":
            var tabs = gBrowser.mTabs;
            if ( tabs.length < 1 ) return;
            for ( var i=0, LEN = tabs.length; i < LEN; i++ ) {
                  var menuitem = popup.appendChild(document.createElement("menuitem"));
                  var tab = tabs[i];
                  menuitem.setAttribute("class", "menuitem-iconic bookmark-item");
                  menuitem.setAttribute("label", tab.label);
                  menuitem.setAttribute("crop", tab.getAttribute("crop") );
                  menuitem.setAttribute("image", tab.getAttribute("image"));
                  menuitem.index = i;
                  if ( tab.selected ) menuitem.setAttribute("style", "color: red; font-weight: bold;");
                  if ( tab.hasAttribute('unread') ) menuitem.setAttribute("style", "color: blue;"); 
                  }
            break;
        }
        
    document.popupNode = null;
    document.tooltipNode = null;
    popup.addEventListener("popuphiding", this, true);
    popup.openPopup( null, "", event.clientX, event.clientY, false, false );
    document.documentElement.addEventListener("mouseup", this, true);
},
  };
ucjsMouseGestures.init();

Под:

Выделить код

Код:

'UDU':{name:'Сбросить масштаб',cmd:function(){ FullZoom.reset() }},

положи:

Выделить код

Код:

'R>L':{name:'Сбросить масштаб',cmd:function(){ FullZoom.reset() }},

bunda1
Не помогло что-то.

Mishania
поменяй на 'L<R'

Inko7, bunda1
Вот теперь всё заработало! Спасибо за помощь.

Inko7 пишет

Mishania
поменяй на 'L<R'

Объясните мне разницу между 'R>L' и  'L<R'
Почему это помогло?

Объясните мне разницу между 'R>L' и  'L<R'
Почему это помогло?

Ну просто так установлено в коде кнопки.

А существует ли простая кнопка выполнить, как в опере?(перейти по введённому адресу) Перерыл почти весь тырнет, чтот нигде нету...

bazik210 пишет

А существует ли простая кнопка выполнить, как в опере?(перейти по введённому адресу) Перерыл почти весь тырнет, чтот нигде нету...

Не понятно!

http://itmages.ru/image/view/1926077/ff538f45
перейти по введенной в адресную строку ссылке, хотелось бы такую кнопочку.

Создай кнопку с кодом:

Выделить код

Код:

loadURI( gURLBar.value );
bunda1 пишет

Создай кнопку с кодом:

Выделить код

Код:

loadURI( gURLBar.value );

пашет, пасиб. :)

есть замечательная кнопка "Bookmarks Menu". все хорошо кроме:
- По левому клику - меню закладок.
- По правому клику мышкой - боковая панель закладок.
можно функционал этих кнопок поменять?
подпилите пожалуйста.

okkamas_knife
Спасибо.:beer:

22-09-2014 12:06:47
okkamas_knife
что-то у меня не получается,
где 2 на 0 поменять вроде нашел. а где 0 на 2 непонятно

okkamas_knife
не, пока не работатет.

p.s. нужно чтоб закладки открывались в боковой панели по ЛевойКМ (до этого неправильно написал ПКМ. так кнопака настроена изначально)
это потому что все остальные кнопки, открывающие боковую панель (которые у меня стоят), делают это по ЛКМ, а тут по правой.

okkamas_knife
ок, понял.
за пробу пера, всеравно - Спасибо.

22-09-2014 17:38:08
нашел кнопку, в которой твоя микстура с цифрами сработала.
так что теперь все работает как запланировано.
и еще раз спасибо.

polk90
В первой кнопке надо помимо изменений проверок event.button поменять «this. setAttribute ("popup",» на «this. setAttribute ("context",».

Infocatcher
попробовал, сработало.
Спасибо!

Кто нибудь знает,как в новых версиях лиса закидывать в вертикальную панель кнопки?Раньше нажал изменить,покидал туда что нужно и всё.А теперь при изменить нет поля от кнопки,куда они ставились.

VORON
Я давнно приспособился так, профиль от новой кидаю в старую, перемещаю, добавляю кнопки в VT, потом обратно, а куда деватся, никто не хочет починить, давно просил.

villa7 пишет

VORON
Я давнно приспособился так, профиль от новой кидаю в старую, перемещаю, добавляю кнопки в VT, потом обратно, а куда деватся, никто не хочет починить, давно просил.

Выделить код

Код:

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%3EVT%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAKP+AAIX/gAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAFf+AABUAAAAAAAAAAAAAAAAAAAAA/4AAJP+AAP//gAD//4AA//+AACQAAAAAAAAAAAAAAAAAAAAA/4AAEv+AAP//gAD//4AAEgAAAAAAAAAA/4AAIP+AAP//gAD//4AA//+AAP//gAD//4AAJgAAAAAAAAAAAAAAAP+AABH/gAD//4AA//+AABEAAAAAAAAAAP+AAP//gAD//4AA//+AADb/gAD//4AA//+AAP//gAAQAAAAAAAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAD//4AA//+AACAAAAAA/4AAIP+AAP//gAD//4AAEQAAAAAAAAAA/4AAD/+AAP//gAD//4AADwAAAAAAAAAA/4AA//+AAP//gAAMAAAAAP+AAAz/gAD//4AA//+AAA8AAAAAAAAAAP+AAA//gAD//4AA//+AAA8AAAAAAAAAAP+AAP//gAD//4AADwAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAD//4AA//+AAA8AAAAA/4AAD/+AAP//gAD//4AADAAAAAAAAAAA/4AACv+AAP//gAD//4AACgAAAAAAAAAA/4AA//+AAP//gAAPAAAAAP+AAA//gAD//4AA//+AAAv/gAAL/4AADP+AACH/gAD//4AA//+AACH/gAAK/4AAD/+AAP//gAD//4AAEQAAAAD/gAAR/4AA//+AAP//gAAm/4AA//+AAP//gAD//4AA//+AAP//gAD//4AA//+AAP//gAD//4AA//+AABIAAAAA/4AAEv+AAP//gAD//4AAJ/+AAP//gAD//4AA//+AAP//gAD//4AA//+AAP//gAD//4AAEf+AABIAAAAAAAAAAAAAAAD/gAAV/4AAEgAAAAD/gAAQ/4AAEf+AAA//gAAP/4AAD/+AAA//gAAP/4AADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQe//rEHH56xBg8OsQQHDrEEAw6xBEMOsQRDDrEEQw6xBEMOsQRAArEEQAKxBEACsQTkArEH//6xB//+sQQ%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20vto%20%3D%20%7B%0A%09distanceShow%3A%202%2C%0A%09distanceHide%3A%2064%2C%0A%09showDelay%3A%20320%2C%0A%09color%3A%20%22%23a2dced%22%2C%0A%09fringe%3A%20%22black%22%2C%0A%09padding%3A%204%2C%0A%09name%3A%20%22VT%22%2C%0A%0A%09btn%3A%20this%2C%0A%09tcm%3A%20document.getElementById%28%22toolbar-context-menu%22%29%2C%0A%09ctm%3A%20document.getElementById%28%22customization-toolbar-menu%22%29%2C%0A%09deck%3A%20document.getElementById%28%22content-deck%22%29%2C%0A%09id%3A%20%22cb-vt%22%2C%0A%0A%09get%20cust%28%29%20gBrowser.currentURI.spec%20%3D%3D%20%22about%3Acustomizing%22%2C%0A%09get%20rdf%28%29%20%7B%0A%09%09delete%20this.rdf%3B%0A%09%09var%20rdf%20%3D%20Cc%5B%22@mozilla.org/rdf/rdf-service%3B1%22%5D.getService%28Ci.nsIRDFService%29%3B%0A%09%09return%20this.rdf%20%3D%20%5B%0A%09%09%09rdf%2C%0A%09%09%09rdf.GetDataSource%28%22rdf%3Alocal-store%22%29%2C%0A%09%09%09rdf.GetResource%28location%20+%20%22%23%22%20+%20this.id%29%2C%0A%09%09%09null%2C%20null%0A%09%09%5D%3B%0A%09%7D%2C%0A%09init%3A%20function%28%29%20%7B%0A%09%09if%20%28this.cust%20%7C%7C%20this.btn._destructors.length%29%20return%3B%0A%0A%09%09var%20vt%20%3D%20this.initVT%28%29%3B%0A%09%09var%20vto%20%3D%20this%3B%0A%0A%09%09this.btn.onclick%20%3D%20function%28e%29%20%7B%0A%09%09%09e.button%20%7C%7C%20vto.toggleVT%28%29%3B%0A%09%09%7D%0A%09%09window.addEventListener%28%22popupshown%22%2C%20this%2C%20false%29%3B%0A%09%09window.addEventListener%28%22popuphidden%22%2C%20this%2C%20false%29%3B%0A%09%09window.addEventListener%28%22resize%22%2C%20this%2C%20false%29%3B%0A%09%09this.tcm.addEventListener%28%22command%22%2C%20this%2C%20false%29%3B%0A%09%09this.tcm.addEventListener%28%22popupshowing%22%2C%20this%2C%20false%29%3B%0A%0A%09%09if%20%28vt.hasOwnProperty%28%22on%22%29%29%20%7B%0A%09%09%09vto.toggleVT%28vt.on%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09var%20%5Brdf%2C%20ds%2C%20source%5D%20%3D%20this.rdf%3B%0A%09%09%09var%20property%20%3D%20rdf.GetResource%28%22collapsed%22%29%3B%0A%09%09%09var%20target%20%3D%20ds.GetTarget%28source%2C%20property%2C%20true%29%3B%0A%09%09%09var%20collapsed%20%3D%20target%20%26%26%20target.QueryInterface%28Ci.nsIRDFLiteral%29.Value%20%3D%3D%20%22true%22%3B%0A%09%09%09vto.toggleVT%28%21collapsed%29%3B%0A%09%09%7D%0A%09%09this.resize%28%29%3B%0A%09%09vto.btn._destructors.push%28%7Bcontext%3A%20vto%2C%20destructor%3A%20vto.destroy%7D%29%3B%0A%09%7D%2C%0A%09destroy%3A%20function%28reason%29%20%7B%0A%09%09window.removeEventListener%28%22popupshown%22%2C%20this%2C%20false%29%3B%0A%09%09window.removeEventListener%28%22popuphidden%22%2C%20this%2C%20false%29%3B%0A%09%09window.removeEventListener%28%22resize%22%2C%20this%2C%20false%29%3B%0A%09%09this.tcm.removeEventListener%28%22command%22%2C%20this%2C%20false%29%3B%0A%09%09this.tcm.removeEventListener%28%22popupshowing%22%2C%20this%2C%20false%29%3B%0A%09%09this.setCollapser%28false%29%3B%0A%0A%09%09if%20%28reason%20%3D%3D%20%22destructor%22%20%26%26%20this.cust%29%20%7B%0A%09%09%09var%20vto%20%3D%20this%3B%0A%09%09%09vto.resize%28%29%3B%0A%0A%09%09%09gNavToolbox.addEventListener%28%22customizationready%22%2C%20vto%2C%20false%29%3B%0A%09%09%09CustomizableUI.addListener%28vto%29%3B%0A%0A%09%09%09this.ctm.addEventListener%28%22command%22%2C%20vto%2C%20false%29%3B%0A%09%09%09this.ctm.addEventListener%28%22popupshowing%22%2C%20vto%2C%20false%29%3B%0A%09%09%09window.addEventListener%28%22resize%22%2C%20vto%2C%20false%29%3B%0A%0A%09%09%09gNavToolbox.addEventListener%28%22aftercustomization%22%2C%20function%20ac%28%29%20%7B%0A%09%09%09%09gNavToolbox.removeEventListener%28%22aftercustomization%22%2C%20ac%2C%20false%29%3B%0A%09%09%09%09gNavToolbox.removeEventListener%28%22customizationready%22%2C%20vto%2C%20false%29%3B%0A%09%09%09%09CustomizableUI.removeListener%28vto%29%3B%0A%0A%09%09%09%09vto.ctm.removeEventListener%28%22command%22%2C%20vto%2C%20false%29%3B%0A%09%09%09%09vto.ctm.removeEventListener%28%22popupshowing%22%2C%20vto%2C%20false%29%3B%0A%09%09%09%09window.removeEventListener%28%22resize%22%2C%20vto%2C%20false%29%3B%0A%0A%09%09%09%09document.getElementById%28vto.btn.id%29%20%7C%7C%20vto.destroyVT%28%29%3B%0A%0A%09%09%09%7D%2C%20false%29%3B%0A%09%09%7D%0A%09%09if%20%28reason%20%3D%3D%20%22delete%22%29%20%7B%0A%09%09%09CustomizableUI.removeWidgetFromArea%28this.btn.id%29%3B%0A%09%09%09this.destroyVT%28%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09handleEvent%3A%20function%28e%29%20this%5Be.type%5D%28e%29%2C%0A%0A%09command%3A%20function%28e%29%20%7B%0A%09%09if%20%28e.target.id%20%21%3D%20%22toggle_%22%20+%20this.id%29%20return%3B%0A%09%09e.preventDefault%28%29%3B%0A%09%09this.toggleVT%28%29%3B%0A%09%7D%2C%0A%09popupshowing%3A%20function%28e%29%20%7B%0A%09%09var%20menuitem%20%3D%20e.target.querySelector%28%22%23toggle_%22%20+%20this.id%29%3B%0A%09%09menuitem%20%26%26%20menuitem.setAttribute%28%22checked%22%2C%20this.vt.on%29%3B%0A%09%09if%20%28this.cust%20%7C%7C%20%21this.vt.contains%28e.target.triggerNode%29%29%20return%3B%0A%09%09for%28var%20selector%20of%20%5B%22.customize-context-moveToPanel%22%2C%20%22.customize-context-removeFromToolbar%22%5D%29%20%7B%0A%09%09%09menuitem%20%3D%20e.target.querySelector%28selector%29%3B%0A%09%09%09menuitem%20%26%26%20menuitem.removeAttribute%28%22disabled%22%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09mousemove%3A%20function%20collapser%28e%29%20%7B%0A%09%09var%20distance%20%3D%20collapser.distance%20%3D%20e.screenX%20-%20document.documentElement.boxObject.screenX%3B%0A%09%09if%20%28collapser.waiting%29%20return%3B%0A%09%09if%20%28distance%20%3C%3D%20this.distanceShow%20%26%26%20this.vt.collapsed%29%20%7B%0A%09%09%09if%20%28this.showDelay%20%3C%201%29%20%7B%0A%09%09%09%09this.vt.collapsed%20%3D%20false%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%09%09%09collapser.waiting%20%3D%20true%3B%0A%09%09%09setTimeout%28function%28vto%29%20%7B%0A%09%09%09%09if%20%28collapser.distance%20%3E%3D%20vto.distanceShow%29%20%7B%0A%09%09%09%09%09collapser.waiting%20%3D%20false%3B%0A%09%09%09%09%09return%3B%0A%09%09%09%09%7D%0A%09%09%09%09vto.vt.collapsed%20%3D%20false%3B%0A%09%09%09%09collapser.waiting%20%3D%20false%3B%0A%09%09%09%7D%2C%20this.showDelay%2C%20this%29%3B%0A%09%09%7D%0A%09%09if%20%28distance%20%3E%3D%20this.distanceHide%20%26%26%20%21this.vt.collapsed%29%0A%09%09%09this.vt.collapsed%20%3D%20true%3B%0A%09%7D%2C%0A%09setCollapser%3A%20function%28set%29%20%7B%0A%09%09set%0A%09%09%3F%20this.cust%20%7C%7C%20window.addEventListener%28%22mousemove%22%2C%20this%2C%20false%29%0A%09%09%3A%20window.removeEventListener%28%22mousemove%22%2C%20this%2C%20false%29%3B%0A%09%7D%2C%0A%09callCollapser%3A%20function%28e%29%20%7B%0A%09%09this.mousemove%28%7BscreenX%3A%20document.documentElement.boxObject.screenX%20+%20MousePosTracker._x%7D%29%3B%0A%09%7D%2C%0A%09customizationready%3A%20function%28%29%20%7B%0A%09%09window.removeEventListener%28%22customizationready%22%2C%20this%2C%20false%29%3B%0A%09%09this.vt.on%20%26%26%20this.insertBox%28true%29%3B%0A%09%7D%2C%0A%09resize%3A%20function%28e%29%20%7B%0A%09%09this.vt.style.maxHeight%20%3D%20this.deck.boxObject.height%20+%201%20+%20%22px%22%3B%0A%09%7D%2C%0A%09popupshown%3A%20function%28e%29%20this.handlePopup%28e%29%2C%0A%09popuphidden%3A%20function%28e%29%20this.handlePopup%28e%29%2C%0A%0A%09handlePopup%3A%20function%28e%29%20%7B%0A%09%09if%20%28%0A%09%09%09this.vt.collapsed%20%7C%7C%20this.vt.on%0A%09%09%09%7C%7C%20%28e.target.localName%20%21%3D%20%22menupopup%22%20%26%26%20e.target.localName%20%21%3D%20%22panel%22%29%0A%09%09%29%20return%3B%0A%09%09setTimeout%28function%28vto%29%20%7B%0A%09%09%09var%20hasPopup%20%3D%20Array.concat%28%0A%09%09%09%09Array.slice%28document.getElementsByTagName%28%22menupopup%22%29%29%2C%0A%09%09%09%09Array.slice%28document.getElementsByTagName%28%22panel%22%29%29%0A%09%09%09%29.some%28function%28popup%29%0A%09%09%09%09%22state%22%20in%20popup%20%26%26%20popup.state%20%3D%3D%20%22open%22%20%26%26%20%28%0A%09%09%09%09%09vto.vt.contains%28popup%29%0A%09%09%09%09%09%7C%7C%20%28%22triggerNode%22%20in%20popup%20%26%26%20vto.vt.contains%28popup.triggerNode%29%29%0A%09%09%09%09%09%7C%7C%20%28%0A%09%09%09%09%09%09%22anchorNode%22%20in%20popup%20%26%26%20popup.anchorNode%20%26%26%20%28%0A%09%09%09%09%09%09%09vto.vt.contains%28popup.anchorNode%29%0A%09%09%09%09%09%09%09%7C%7C%20vto.vt.contains%28document.getBindingParent%28popup.anchorNode%29%29%0A%09%09%09%09%09%09%29%0A%09%09%09%09%09%29%0A%09%09%09%09%29%0A%09%09%09%29%3B%0A%09%09%09vto.setCollapser%28%21hasPopup%29%3B%0A%09%09%09hasPopup%20%7C%7C%20vto.callCollapser%28%29%3B%0A%09%09%7D%2C%20200%2C%20this%29%3B%0A%09%7D%2C%0A%09onWidgetAfterDOMChange%3A%20function%28...a%29%20%7B%0A%09%09if%20%28a%5B2%5D%20%3D%3D%20this.vt.box%29%20this.vt.hbox.style.minWidth%20%3D%20this.vt.boxObject.width%20+%20%22px%22%3B%0A%09%7D%2C%0A%09initVT%3A%20function%28%29%20%7B%0A%09%09var%20id%20%3D%20this.id%3B%0A%09%09var%20boxId%20%3D%20id%20+%20%22-customization-target%22%3B%0A%09%09var%20vt%20%3D%20this.vt%20%3D%0A%09%09%09document.getElementById%28id%29%20%7C%7C%0A%09%09%09document.createElement%28%22toolbar%22%29%3B%0A%09%09var%20attrs%20%3D%20%7B%0A%09%09%09id%3A%20id%2C%0A%09%09%09mode%3A%20%22icons%22%2C%0A%09%09%09iconsize%3A%20%22small%22%2C%0A%09%09%09orient%3A%20%22vertical%22%2C%0A%09%09%09customizable%3A%20%22true%22%2C%0A%09%09%09persist%3A%20%22collapsed%22%2C%0A%09%09%09toolbarname%3A%20this.name%2C%0A%09%09%09fullscreentoolbar%3A%20%22true%22%2C%0A%09%09%09class%3A%20%22chromeclass-toolbar%22%2C%0A%09%09%09context%3A%20%22toolbar-context-menu%22%2C%0A%09%09%09style%3A%20%22-moz-appearance%3A%20none%3B%20display%3A%20-moz-box%3B%20height%3A%20100%25%3B%20position%3A%20fixed%3B%20min-width%3A%2020px%22%0A%09%09%7D%3B%0A%09%09for%28var%20attr%20in%20attrs%29%20vt.setAttribute%28attr%2C%20attrs%5Battr%5D%29%3B%0A%09%09if%20%28%21vt.parentNode%29%20%7B%0A%0A%09%09%09var%20box%20%3D%20vt.box%20%3D%20document.createElement%28%22vbox%22%29%3B%0A%09%09%09vt.appendChild%28box%29%3B%0A%09%09%09box.id%20%3D%20boxId%3B%0A%09%09%09box.style.cssText%20%3D%20%22height%3A%20100%25%3B%20width%3A%20100%25%3B%22%0A%0A%09%09%09vt.customizationTarget%20%3D%20box%3B%0A%09%09%09gNavToolbox.appendChild%28vt%29%3B%0A%0A%09%09%09if%20%28CustomizableUI.areas.indexOf%28id%29%20%3D%3D%20-1%29%20%7B%0A%09%09%09%09CustomizableUI.registerArea%28id%2C%20%7Blegacy%3A%20true%7D%29%3B%0A%09%09%09%7D%0A%09%09%09box.removeAttribute%28%22class%22%29%3B%0A%09%09%09box.__defineGetter__%28%22localName%22%2C%20function%28%29%20arguments.callee.caller%20%3D%3D%20custombutton.buttonConstructor%20%3F%20%22toolbar%22%20%3A%20%22vbox%22%29%3B%0A%0A%09%09%09vt.hbox%20%3D%20document.createElement%28%22hbox%22%29%3B%0A%09%09%09vt.hbox.id%20%3D%20id%20+%20%22-hbox%22%3B%0A%09%09%7D%0A%09%09vt.box.style.padding%20%3D%20%220%20%22%20+%20this.padding%20+%20%22px%22%3B%0A%09%09vt.style.backgroundColor%20%3D%20this.color%3B%0A%09%09vt.style.borderRight%20%3D%20%221px%20solid%20%22%20+%20this.fringe%3B%0A%09%09return%20vt%3B%0A%09%7D%2C%0A%09destroyVT%3A%20function%28reason%29%20%7B%0A%09%09var%20vt%20%3D%20this.vt%3B%0A%09%09CustomizableUI.unregisterArea%28vt.id%2C%20%7B%7D%29%3B%0A%09%09vt.hbox.parentNode%20%26%26%20vt.hbox.parentNode.removeChild%28vt.hbox%29%3B%0A%09%09vt.parentNode%20%26%26%20vt.parentNode.removeChild%28vt%29%3B%0A%0A%09%09var%20%5Brdf%2C%20ds%2C%20source%2C%20property%2C%20target%5D%20%3D%20this.rdf%3B%0A%09%09var%20enumerator%20%3D%20ds.ArcLabelsOut%28source%29%3B%0A%09%09while%28enumerator.hasMoreElements%28%29%29%20%7B%0A%09%09%09property%20%3D%20enumerator.getNext%28%29%3B%0A%09%09%09target%20%3D%20ds.GetTarget%28source%2C%20property%2C%20true%29%3B%0A%09%09%09ds.Unassert%28source%2C%20property%2C%20target%29%3B%0A%09%09%7D%0A%09%09target%20%3D%20source.QueryInterface%28Ci.nsIRDFNode%29%3B%0A%09%09source%20%3D%20rdf.GetResource%28location%29%3B%0A%09%09property%20%3D%20rdf.GetResource%28%22http%3A//home.netscape.com/NC-rdf%23persist%22%29%3B%0A%09%09ds.Unassert%28source%2C%20property%2C%20target%29%3B%0A%09%7D%2C%0A%09insertBox%3A%20function%28ins%29%20%7B%0A%09%09var%20vt%20%3D%20this.vt%3B%0A%09%09var%20box%20%3D%20vt.hbox%3B%0A%09%09if%20%28%21ins%29%20%7B%0A%09%09%09box.parentNode%20%26%26%20box.parentNode.removeChild%28box%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09var%20id%20%3D%20this.cust%20%3F%20%22customization-palette-container%22%20%3A%20%22sidebar-box%22%3B%0A%09%09var%20point%20%3D%20document.getElementById%28id%29%3B%0A%09%09point.parentNode.insertBefore%28box%2C%20point%29%3B%0A%09%09var%20mw%20%3D%20function%28%29%20box.style.minWidth%20%3D%20vt.boxObject.width%20+%20%22px%22%3B%0A%09%09mw%28%29%3B%20setTimeout%28mw%2C%20100%29%3B%0A%09%7D%2C%0A%09toggleVT%3A%20function%28on%29%20%7B%0A%09%09var%20vt%20%3D%20this.vt%3B%0A%09%09if%20%28on%20%3D%3D%20undefined%29%20on%20%3D%20%21vt.on%3B%0A%09%09vt.on%20%3D%20on%3B%0A%09%09this.setCollapser%28%21on%29%3B%0A%09%09vt.collapsed%20%3D%20%21on%3B%0A%09%09this.insertBox%28on%29%3B%0A%09%7D%0A%7D%3B%0Avto.init%28%29%3B%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bevent.target%20%7C%7C%20this.click%28%29%3B%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

bunda1
У меня немножко другая кнопка, VT2, на одну панель не влезают все кнопки.
https://forum.mozilla-russia.org/viewto … 72#p650972

bunda1
Спасибо огромное!:beer:А жизнь то-налаживается.
А ещё не посмотришь кнопку,что-то в 31й лисе она не работает.

VORON пишет

bunda1
Спасибо огромное!:beer:А жизнь то-налаживается.
А ещё не посмотришь кнопку,что-то в 31й лисе она не работает.

Удали в начале кода: Cu.import("resource://gre/modules/XPIProvider.jsm");

bunda1 пишет

Удали в начале кода: Cu.import("resource://gre/modules/XPIProvider.jsm");

Спасибо заработала.  А можешь сделать, чтобы Место установки открывалось в Total Commander?

villa7 пишет

У меня немножко другая кнопка, VT2, на одну панель не влезают все кнопки.

хотел попробовать, правильный код не нашел, подскажите где смотреть?

polk90
Код здесь
https://forum.mozilla-russia.org/viewto … 14#p611514
Но наполнять кнопками нужно в старых версиях, а потом переносить на новую.

voqabuhe пишет
bunda1 пишет

Удали в начале кода: Cu.import("resource://gre/modules/XPIProvider.jsm");

Спасибо заработала.  А можешь сделать, чтобы Место установки открывалось в Total Commander?

Наверно нет, мне кажется это надо настраивать в windows или в Total Commander, ну ассоциации с файлами.

bunda1 пишет

мне кажется это надо настраивать в windows или в Total Commander, ну ассоциации с файлами.

Ну очень сомнительно, что там это настраивается, да и какая ассоциация с файлами, если открывать надо папку?

villa7 пишет

Но наполнять кнопками нужно в старых версиях, а потом переносить на новую.

а ... теперь понял.

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

может кто знает аналогичный вариант панели, чтоб с автоскрытием и работал?

https://addons.mozilla.org/en-US/firefo … l-toolbar/
хороший вариант,уже год стоит,проблем нет

roadrunner
попробовал. очень замечательно. Спасибо.

А кто-то может подсказать по созданию кнопок?
Мне нужна кнопка для TB, при клике в которую в адресаты письма добавлялся бы новый адрес в Bcc. Он там бывает нужен, чтобы письмо зарегистрировалось в CRM.

Можно ли сделать CB кнопку - компаньон для Stylish? Описание функциональности привожу ниже.
1. Stylish - это Файрфокс аддон, позволяющий назначать стили определённым доменам (хостам) и УРЛ-префиксам.
Сами стили хранятся в подразделе "Стили" аддон менеджера и имеют имена.
2. Некоторые сайты настолько непритязательны, что для них могут использоваться предельно простые стили. Например:

Выделить код

Код:

@namespace url(http://www.w3.org/1999/xhtml);

@-moz-document url-prefix("chrome"),url-prefix("file"), domain("yandex.ru") {

body {background-image:url(file:///C:/Users/yudith/Pictures/Icons/gold.gif) !important;background-size: cover !important;background-repeat:no-repeat !important;background-attachment:fixed !important}

all {background-color:transparent !important}
}

То есть, всё что этот стиль делает - вставляет в качестве фона - заданную картинку.
3. Суть моей просьбы - иметь СВ кнопку-компаньон, которая содержала бы что-то типа списков для подобного рода стилей:
<Имя стиля 1> - <Список1 фоновых картинок (их адресов/урл-ов) >
<Имя стиля 2> - <Список2 фоновых картинок (их адресов/урл-ов) >
...
<Имя стиля К> - <СписокК фоновых картинок (их адресов/урл-ов) >
И чтоб каждую минуту (например) для каждого из указанных стилей подменялся бы  background-image:url на один из списка адресов фоновых картинок (желательно - случайным образом).
Можно ли сделать такую СВ кнопку (вернее - код, где юзер может задать имена стилей и списки адресов
Такой код просто бы оживил "гуляние" по сайтам

Есть замечательная кнопка

Выделить код

Код:

var oSvc = Components.classes["@mozilla.org/observer-service;1"]
           .getService(Components.interfaces.nsIObserverService);

var observer = {

observe: function(subject, topic, data) {
         subject.addEventListener("load", this, false); },
      
handleEvent: function(e) {
    var doc = e.target;
    var win = doc.defaultView;
        win.removeEventListener("load", this, false);

    if (doc.location.href != "chrome://browser/content/preferences/cookies.xul") return;

    oSvc.removeObserver(observer, "domwindowopened", false);

  var filter = doc.getElementById("filter");
  var host = gBrowser.contentDocument.location.host;
  var words = host.split(".");
  var theHost = words[words.length - 2] + "." + words[words.length - 1];
  
  filter.value = theHost;
  
  window.setTimeout(function() {win.gCookiesWindow.filter();}, 250) }};

oSvc.addObserver(observer, "domwindowopened", false);

var wm = Components. classes["@mozilla.org/appshell/window-mediator;1"].
     getService (Components. interfaces. nsIWindowMediator);
var win = wm. getMostRecentWindow ("Browser:Cookies");
if (win) {
    alert("Сначала закройте уже открытое окно с куками");
    oSvc.removeObserver(observer, "domwindowopened", false);
    return; }
else
    openDialog ("chrome://browser/content/preferences/cookies.xul", "_blank", "resizable,dialog=yes,centerscreen", null);

сейчас так: нажимаю кнопку - далее "удалить все куки"
не хочется лишнее действие делать - "удалить все куки".
Огромная просьба, можно подправить код кнопки, чтобы при нажатии на нее - было так:
выполнялось действие нажатия кнопки "удалить все куки".

Можно кнопку https://forum.mozilla-russia.org/viewto … 86#p625686 немного изменить, т.е. вместо "выключить показ изображений на страницах" сделать "только с исходного сервера"? Или повесить на ПКМ.

manuk пишет

Можно кнопку https://forum.mozilla-russia.org/viewto … 86#p625686 немного изменить, т.е. вместо "выключить показ изображений на страницах" сделать "только с исходного сервера"? Или повесить на ПКМ.

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

bunda1 пишет

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

Оказалось только одну цифру в коде изменить нужно.

manuk пишет

Оказалось только одну цифру в коде изменить нужно.

А я и забыл что есть такая настройка.
permissions.default.image (Целое) - отвечает за отображение изображений. Значения:
   3 - Загружать изображения только с этого же сервера

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

polk90
Вроде исчезают :/. Завершённые.

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

Выделить код

Код:

gBrowser.currentURI.spec != "about:customizing" && (() => {
    var id = _id + "-" + Components.stack.lineNumber;
    var mod = Cu.import("resource:///modules/DownloadsLogger.jsm", {});
    if (mod[id]) return; mod[id] = true;
    addDestructor(() => delete mod[id]);
    var err = Cu.reportError, tmp = OS.Constants.Path.tmpDir + "\\";
    Task.spawn(function() {

        var list = yield Downloads.getList(Downloads.ALL), view = {};
        view.onDownloadAdded = view.onDownloadChanged = download =>
            download.progress == 100
            && download.target.path.startsWith(tmp)
            && setTimeout(() => {
                var uri = makeURI(download.source.url);
                PlacesUtils.bhistory.removePage(uri);
                list.remove(download).then(null, err);
            }, 1e3);
        yield list.addView(view);
        setTimeout(() => delete view.onDownloadAdded, 5e3);
        addDestructor(() => list.removeView(view).then(null, err));

    }).then(null, err);
})();

Dumby
магнет ссылки торрентов чистятся!!! причем нет даже анимации конца загрузки. огромное спасибо!

torrent/zip/pdf/doc - не убирается. другие не пробовал.
p.s. на всякий случай win7-64/Waterfox/ и TMP в системе настроен на D:\Temp\_sys_Temp\

polk90 пишет

zip/pdf/doc - не убирается

Если они в одной папке с торрентами, то не знаю.
А если в другой, то можно попробовать ещё своих путей добавить.

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

Выделить код

Код:

gBrowser.currentURI.spec != "about:customizing" && (() => {
    var id = _id + "-" + Components.stack.lineNumber;
    var mod = Cu.import("resource:///modules/DownloadsLogger.jsm", {});
    if (mod[id]) return; mod[id] = true;
    addDestructor(() => delete mod[id]);
    var err = Cu.reportError;
    var directories = [

        OS.Constants.Path.tmpDir + "\\",
        "D:\\Temp\\_sys_Temp\\"
    ];
    function checkDir(path) directories.some(dir =>
        path.startsWith(dir)
        //&& !path.slice(dir.length).contains("\\")
    );
    Task.spawn(function() {

        var list = yield Downloads.getList(Downloads.ALL), view = {};
        view.onDownloadAdded = view.onDownloadChanged = download =>
            download.progress == 100
            && checkDir(download.target.path)
            && setTimeout(() => {
                var uri = makeURI(download.source.url);
                PlacesUtils.bhistory.removePage(uri);
                list.remove(download).then(null, err);
            }, 1e3);
        yield list.addView(view);
        setTimeout(() => delete view.onDownloadAdded, 5e3);
        addDestructor(() => list.removeView(view).then(null, err));

    }).then(null, err);
})();

Dumby
Супер, работает!!!

и первый вариант тоже работает.
проблема не в нем. я косячил вставляя код в не в "Initialization Code" а в "Code".
Все работает!!!Спасибо!!!

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

skynet281978
Ctrl+Shift+a ->  Сustom Buttons -> Удалить

спасибо всем. получилось через шифт ПКМ

Подскажите код копирующий в буфер ссылку находящуюся под указателем мыши :)

oopsididagainster пишет

Подскажите код копирующий в буфер ссылку находящуюся под указателем мыши

oncommand = gContextMenu.copyLink();

Pony_Smile_Pack пишет

oncommand = gContextMenu.copyLink();

Поместил код в инициализацию кнопку, повесил кнопку на клавишу, но при нажатии на клавишу ничего не происходит.

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

[del]

bunda1, подскажи, что изменить в этом твоем коде, чтобы открытие происходило в новой вкладке

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

Выделить код

Код:

// удаление обработчика для адресной строки, при открытии настройки панелей
this.onDestroy = function() {document.getElementById("urlbar").removeEventListener("dblclick", mclick, false);};
 
// добавляем обработчик для адресной строки 
document.getElementById("urlbar").addEventListener("dblclick", mclick, false);

//функция которую запускает обработчик
function mclick(event){

if (event.button==0){
        //отключать реакцию по умолчанию на левую кнопку мыши
            event.preventDefault();
            event.stopPropagation();
//Вставить в адресную строку
var clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"].  getService(Components.interfaces.nsIClipboardHelper);
var text = content.getSelection().toString();
if(text){gURLBar.value = text;}
else
{
gURLBar.value = readFromClipboard();
}
//поиск/перейти
gURLBar.handleCommand(event);
}
              };

thrower

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

Выделить код

Код:

//gURLBar.handleCommand(event);
gURLBar.handleCommand(new MouseEvent("", {
    ctrlKey: true,
    //shiftKey: true
}));

Dumby, работает! Спасибо :)

Раньше была такая кнопка-Extensions Options Menu

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

Выделить код

Код:

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%3EExtensions%20Options%20Menu%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyBpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBXaW5kb3dzIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjU4NzIwMkI5QkNFNDExRTBCOEIwQzU3QzQyMDBGNDk2IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOjU4NzIwMkJBQkNFNDExRTBCOEIwQzU3QzQyMDBGNDk2Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6NTg3MjAyQjdCQ0U0MTFFMEI4QjBDNTdDNDIwMEY0OTYiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6NTg3MjAyQjhCQ0U0MTFFMEI4QjBDNTdDNDIwMEY0OTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4v/lPcAAACe0lEQVR42nRTW0tUURQ++3IuHmecdCJzLDRqisaKoR4zlMDKKLEoiR4qIiLwB/QS/YN6CYSgiCBCaKDAIqJI6GKQGFEqhjUQqQk5w5hnZjq3vVtrPMY46YaPb6+111pn3Q6RUioVhwMMgApwAX8AnrLawQBloH03bzU0b935bN2GLbPIKKO+wu4faEU8MvD4aasvaVO4rn4KGWXUr5YADVIOAeoQfTeuTyeTyc+mGc4io7z0FtjxZV+ENEJN8R0px/YSCiWCq3qhKhSeU3Uz79qF6qK1sNZzbVMRkmo6H/8+OXoC/KzyhmlC4bGaaPQrIdQjlArGuU0p94luOoxpBSkE9EDwgjUfA3sdUAQIbCGWIBnXFjjXclzX51W9KguyBYGKyJphZnQz9Msww7M63DOZbG3Hoa7D4BcGMAxgd3a0fRgbfj7Qub91xvddGoxvOQhxmKpa7Qe7r4xNTF6LJ3bfxnGjsXf+7On7wKnei2ee+K6NZTkrgXMj50kWqo7UffF80oi7gsb83IVLPd1HjxiDr960QbPcwOG/Q6hCd21P5D5+Gq1PtGxLY2Y4hdrGTS0vmapZKtd+G6HINNf0/EoB7KIVnRgZTPU/eBg/dfLYMKjeYgZUrzKnjerIFKXMI4y7vutwIX1OCfMoVx1CiI8BoDycwBA4DwFnlqagEMbype6r2oLiufzq5d6f4+9fvEOWrqOhL/ZKSFHafsBcwKVNlItXqF4I2bA+ynqOdz0CuR8ZZdSX5r5oJytX2Y5vbs5DfWscu1iTTn+r39t+IHnn7j0NGWXU4zvaoX3lKjPgfYBYoMNfdwTwA7ARsKds/2cAr4OSSuevAAMAy+gvpYr6B6sAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bthis.label%20%3D%20%22Extensions%22%3B%0Athis.tooltipText%20%3D%20this.label%3B%0A%0A/*%20*****%20BEGIN%20LICENSE%20BLOCK%20*****%0A%20*%20Version%3A%20MPL%201.1%0A%20*%0A%20*%20The%20contents%20of%20this%20file%20are%20subject%20to%20the%20Mozilla%20Public%20License%20Version%0A%20*%201.1%20%28the%20%22License%22%29%3B%20you%20may%20not%20use%20this%20file%20except%20in%20compliance%20with%0A%20*%20the%20License.%20You%20may%20obtain%20a%20copy%20of%20the%20License%20at%0A%20*%20http%3A//www.mozilla.org/MPL/%0A%20*%0A%20*%20Software%20distributed%20under%20the%20License%20is%20distributed%20on%20an%20%22AS%20IS%22%20basis%2C%0A%20*%20WITHOUT%20WARRANTY%20OF%20ANY%20KIND%2C%20either%20express%20or%20implied.%20See%20the%20License%0A%20*%20for%20the%20specific%20language%20governing%20rights%20and%20limitations%20under%20the%0A%20*%20License.%0A%20*%0A%20*%20Original%20code%20is%20Extensions%20Options%20Menu%20for%20Custom%20Buttons%0A%20*%0A%20*%20The%20Initial%20Developer%20of%20the%20Original%20Code%20is%20LouCypher.%0A%20*%20Portions%20created%20by%20the%20Initial%20Developer%20are%20Copyright%20%28C%29%202011%0A%20*%20the%20Initial%20Developer.%20All%20Rights%20Reserved.%0A%20*%0A%20*%20Contributor%28s%29%3A%0A%20*%20%20LouCypher%20%3Cloucypher@mozillaca.com%3E%0A%20*%0A%20*%20*****%20END%20LICENSE%20BLOCK%20*****%20*/%0A%0Afunction%20%24%28aId%29%20%7B%0A%20%20return%20document.getElementById%28aId%29%3B%0A%7D%0A%0Afunction%20%24xml%28aXML%29%20%7B%0A%20%20return%20cbu.makeXML%28aXML%29%3B%0A%7D%0A%0Afunction%20sort%28aArray%29%20%7B%0A%20%20aArray.sort%28function%28a%2C%20b%29%20%7B%0A%20%20%20%20a%20%3D%20a.name.toLowerCase%28%29%3B%0A%20%20%20%20b%20%3D%20b.name.toLowerCase%28%29%3B%0A%20%20%20%20if%20%28a%20%3C%20b%29%20return%20-1%3B%0A%20%20%20%20if%20%28a%20%3E%20b%29%20return%201%3B%0A%20%20%20%20return%200%3B%0A%20%20%7D%29%0A%7D%0A%0Athis.openDialog%20%3D%20function%28aURL%29%20%7B%0A%20%20openDialog%28aURL%2C%20%22%22%2C%20%22chrome%2C%20dialog%2C%20close%2C%20titlebar%2C%20toolbar%2C%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22scrollbars%2C%20minimizable%2C%20centerscreen%22%29%3B%0A%7D%0A%0Athis.setStatus%20%3D%20function%28aString%29%20%7B%0A%20%20document.getElementById%28%22statusbar-display%22%29.label%20%3D%20aString%3B%0A%7D%0A%0Athis.onclick%20%3D%20function%20inspectExtensions%28aEvent%29%20%7B%0A%20%20if%20%28%28typeof%20inspectObject%20%21%3D%20%22function%22%29%20%7C%7C%0A%20%20%20%20%20%20%28aEvent.button%20%21%3D%201%29%29%20return%3B%0A%20%20AddonManager.getAllAddons%28function%28aAddons%29%20%7B%0A%20%20%20%20var%20extensions%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20aAddons.length%3B%20i++%29%20%7B%0A%20%20%20%20%20%20if%20%28aAddons%5Bi%5D.type%20%3D%3D%20%22extension%22%29%20%7B%0A%20%20%20%20%20%20%20%20extensions.push%28aAddons%5Bi%5D%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20sort%28extensions%29%3B%0A%20%20%20%20inspectObject%28extensions%29%3B%0A%20%20%7D%29%0A%7D%0A%0Athis.addonsMgr%20%3D%20function%28aPopup%2C%20aCallback%29%20%7B%0A%20%20AddonManager.getAllAddons%28function%28aAddons%29%20%7B%0A%20%20%20%20var%20extensions%20%3D%20%5B%5D%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20aAddons.length%3B%20i++%29%20%7B%0A%20%20%20%20%20%20aAddons%5Bi%5D.toString%20%3D%20function%28%29%20%7B%20return%20this.name%3B%20%7D%0A%20%20%20%20%20%20if%20%28%28aAddons%5Bi%5D.type%20%3D%3D%20%22extension%22%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%28aAddons%5Bi%5D.optionsURL%20%21%3D%20null%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20aAddons%5Bi%5D.isActive%29%20%7B%0A%20%20%20%20%20%20%20%20extensions.push%28aAddons%5Bi%5D%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20sort%28extensions%29%3B%0A%20%20%20%20aCallback%28aPopup%2C%20extensions%29%3B%0A%20%20%7D%29%0A%7D%0A%0Afunction%20getExtensionObject%28aId%2C%20aCallback%29%20%7B%0A%20%20AddonManager.getAllAddons%28function%28aAddons%29%20%7B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20aAddons.length%3B%20i++%29%20%7B%0A%20%20%20%20%20%20if%20%28aAddons%5Bi%5D.id%20%3D%3D%20aId%29%20%7B%0A%20%20%20%20%20%20%20%20aCallback%28aAddons%5Bi%5D%29%3B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%7D%29%0A%7D%0A%0Afunction%20addItem%28aNode%2C%20aId%2C%20aLabel%2C%20aURL%2C%20aIcon%2C%20aHomePage%2C%20aDesc%29%20%7B%0A%20%20aNode.appendChild%28%24xml%28%3Cmenuitem%20xmlns%3D%7Bxulns%7D%20class%3D%22menuitem-iconic%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20GUID%3D%7BaId%7D%20label%3D%7BaLabel%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20image%3D%7BaIcon%7D%20homepage%3D%7BaHomePage%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20statustext%3D%7BaURL%7D%20tooltiptext%3D%7BaDesc%7D/%3E%29%29%3B%0A%7D%0A%0Avar%20popup%20%3D%20%24xml%28%3Cmenupopup%20xmlns%3D%7Bxulns%7D%20context%3D%22cb-extensions-menu%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20oncommand%3D%22event.stopPropagation%28%29%3B%20this.parentNode.openDialog%28event.target.statusText%29%3B%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseover%3D%22this.parentNode.setStatus%28event.target.statusText%29%3B%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseout%3D%22this.parentNode.setStatus%28%27%27%29%3B%22/%3E%29%3B%0A%0Athis.populate%20%3D%20function%28aPopup%2C%20aExtensions%29%20%7B%0A%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20aExtensions.length%3B%20i++%29%20%7B%0A%20%20%20%20let%20ext%20%3D%20aExtensions%5Bi%5D%3B%0A%20%20%20%20addItem%28aPopup%2C%20ext.id%2C%20ext.name%20+%20%22%20%22%20+%20ext.version%2C%20ext.optionsURL%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%28ext.iconURL%20%3F%20ext.iconURL%20%3A%20%22chrome%3A//mozapps/skin/extensions/extensionGeneric-16.png%22%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%28ext.homepageURL%20%3F%20ext.homepageURL%20%3A%20ext.reviewURL.replace%28/%5C/reviews/%2C%20%22%22%29.toString%28%29%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ext.description%29%3B%0A%20%20%7D%0A%7D%0A%0Athis.addonsMgr%28popup%2C%20this.populate%29%3B%0A%0Athis.appendChild%28popup%29%3B%0Athis.type%20%3D%20%22menu-button%22%3B%0A%0A//---------------------------------%0A%0Athis.copyId%20%3D%20function%28aId%29%20%7B%0A%20%20Cc%5B%22@mozilla.org/widget/clipboardhelper%3B1%22%5D.%0A%20%20getService%28Ci.nsIClipboardHelper%29.copyString%28aId%29%3B%0A%7D%0A%0Athis.goHome%20%3D%20function%28aURL%29%20%7B%0A%20%20gBrowser.loadOneTab%28aURL%29%3B%0A%7D%0A%0Athis.inspect%20%3D%20function%28aId%29%20%7B%0A%20%20getExtensionObject%28aId%2C%20inspectObject%29%3B%0A%7D%0A%0Athis.explore%20%3D%20function%28aId%29%20%7B%0A%20%20var%20dirService%20%3D%20Cc%5B%22@mozilla.org/file/directory_service%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20getService%28Ci.nsIProperties%29%3B%0A%20%20var%20dir%20%3D%20dirService.get%28%22ProfD%22%2C%20Ci.nsIFile%29%3B%0A%20%20dir.append%28%22extensions%22%29%3B%0A%20%20dir.append%28aId%29%3B%0A%20%20if%20%28%21dir.exists%28%29%29%20%7B%0A%20%20%20%20alert%28%22Directory%20%22%20+%20dir.path%20+%20%22%20doesn%27t%20exist%21%22%29%3B%0A%20%20%20%20return%3B%0A%20%20%20%20//dir.append%28%22.xpi%22%29%3B%0A%20%20%20%20//Application.console.log%28dir.path%29%3B%0A%20%20%7D%0A%20%20var%20localFileInterface%20%3D%20Cc%5B%22@mozilla.org/file/local%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20createInstance%28Ci.nsILocalFile%29%3B%0A%20%20localFileInterface.initWithPath%28dir.path%29%3B%0A%20%20var%20iDirectory%20%3D%20localFileInterface%3B%0A%20%20try%20%7B%0A%20%20%20%20iDirectory.reveal%28%29%3B%0A%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20var%20uri%20%3D%20Cc%5B%22@mozilla.org/network/io-service%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20getService%28Ci.nsIIOService%29.newFileURI%28iDirectory%29%3B%0A%20%20%20%20var%20protocolSvc%20%3D%20Cc%5B%22@mozilla.org/uriloader/external-protocol-service%3B1%22%5D.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20getService%28Ci.nsIExternalProtocolService%29%3B%0A%20%20%20%20protocolSvc.loadUrl%28uri%29%3B%0A%20%20%7D%0A%7D%0A%0Aif%20%28%24%28%22cb-extensions-menu%22%29%29%20%7B%0A%20%20%24%28%22cb-extensions-menu%22%29.parentNode.removeChild%28%24%28%22cb-extensions-menu%22%29%29%3B%0A%7D%0A%0Athis.checkForDOMI%20%3D%20function%28aEvent%29%20%7B%0A%20%20if%20%28typeof%20inspectObject%20%21%3D%20%22function%22%29%20%7B%0A%20%20%20%20aEvent.target.getElementsByTagName%28%22menuitem%22%29%5B2%5D.hidden%20%3D%20true%3B%0A%20%20%7D%0A%7D%0A%0Avar%20popupset%20%3D%20document.getElementById%28%22mainPopupSet%22%29%3B%0Avar%20context%20%3D%20popupset.appendChild%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24xml%28%3Cmenupopup%20xmlns%3D%7Bxulns%7D%20id%3D%22cb-extensions-menu%22%20onclick%3D%22event.stopPropagation%28%29%3B%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onpopupshowing%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.checkForDOMI%28event%29%3B%22%7D%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cmenuitem%20label%3D%22Visit%20Home%20Page%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseover%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.setStatus%28document.popupNode.getAttribute%28%27homepage%27%29%29%3B%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseout%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.setStatus%28%27%27%29%3B%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20oncommand%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.goHome%28document.popupNode.getAttribute%28%27homepage%27%29%29%3B%22%7D/%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cmenuitem%20label%3D%22Copy%20GUID%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseover%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.setStatus%28document.popupNode.getAttribute%28%27GUID%27%29%29%3B%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseout%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.setStatus%28%27%27%29%3B%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20oncommand%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.copyId%28document.popupNode.getAttribute%28%27GUID%27%29%29%3B%22%7D/%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cmenuitem%20label%3D%22Inspect%20Extension%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseover%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.setStatus%28document.popupNode.getAttribute%28%27GUID%27%29%29%3B%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseout%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.setStatus%28%27%27%29%3B%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20oncommand%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.inspect%28document.popupNode.getAttribute%28%27GUID%27%29%29%3B%22%7D/%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cmenuitem%20label%3D%22Browse%20Install%20Directory%22%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseover%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.setStatus%28document.popupNode.getAttribute%28%27GUID%27%29%29%3B%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20onmouseout%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.setStatus%28%27%27%29%3B%22%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20oncommand%3D%7B%22document.getElementById%28%27%22%20+%20this.id%20+%20%22%27%29.explore%28document.popupNode.getAttribute%28%27GUID%27%29%29%3B%22%7D/%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/menupopup%3E%29%29%3B%0A%0A%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bvar%20url%20%3D%20%22chrome%3A//mozapps/content/extensions/extensions.xul%22%3B%0A%0Aif%20%28gBrowser.mCurrentTab.linkedBrowser.currentURI.spec%20%3D%3D%20%22about%3Ablank%22%29%20%7B%0A%20%20loadURI%28url%29%3B%0A%20%20return%3B%0A%7D%0A%0Avar%20tabs%20%3D%20gBrowser.mTabs%3B%0Afor%20%28var%20i%20%3D%200%3B%20i%20%3C%20tabs.length%3B%20i++%29%20%7B%0A%20%20if%20%28tabs%5Bi%5D.linkedBrowser.currentURI.spec%20%3D%3D%20url%29%20%7B%0A%20%20%20%20gBrowser.selectedTab%20%3D%20tabs%5Bi%5D%3B%0A%20%20%20%20return%3B%0A%20%20%7D%0A%7D%0A%0AgBrowser.loadOneTab%28url%2C%20null%2C%20null%2C%20null%2C%20false%29%3B%0A%0A%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E


Теперь неактивна,точнее просто открывает вкладку с дополнениями.Можно починить?

VORON
Эта что ли.

Dumby
Примерно.Та,что в моём посте выглядит так,а из вашего-так

Indomito пишет

Кнопка перестала сохранять CB из PanelUI, можешь поправить?

voqabuhe
Попробуй

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

Выделить код

Код:

(() => {
    var document = {
        getElementsByTagName: tag => {
            var res = window.document.getElementsByTagName(tag);
            if (PanelUI.contents.hasChildNodes())
                res = [...res].concat([...PanelUI.contents.getElementsByTagName(tag)]);
            return res;
        },
        implementation: window.document.implementation
    };

    // Здесь код кнопки

})();

Dumby пишет

Попробуй

У меня всё равно не сохраняет.

voqabuhe
36.0a1 (2014-10-29). Вот так и живём :(. img.

voqabuhe пишет

36.0a1 (2014-10-29).

Да, но ведь PanelUI уже не только в [nightly].

Dumby пишет

Вот так и живём :(. img.

Скрин не понял к чему?

voqabuhe пишет

Скрин не понял к чему?

Просто посетовал, на то, что у меня сохраняет, а у тебя не сохраняет.
Сейчас ещё раз проделал то, что посоветовал тебе, — всё равно сохраняет.
На 30.0 — то же.

Dumby пишет

Просто посетовал, на то, что у меня сохраняет, а у тебя не сохраняет.
Сейчас ещё раз проделал то, что посоветовал тебе, — всё равно сохраняет.
На 30.0 — то же.

Теперь понЯл. А на [nightly] нет желания попробовать?:)

voqabuhe пишет

А на [nightly] нет желания попробовать?:)

Так именно на Nightly и пробовал. И скрин с Nightly.
И на Nightly работает. Или за два дня успели что-то поломать ?

Dumby пишет

И на Nightly работает. Или за два дня успели что-то поломать ?

Разобрался, действительно работает. Спасибо.

По поводу кнопки Target control(Firefox)(Seamonkey). Как я понял, она удаляет атрибут target='_blank' из ссылок. Просветите, пожалуйста, а нельзя ли в usercontent.css прописать стиль, чтоб из всех ссылок убирать  target='_blank'  , как в этом стиле для старой Оперы:

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

Выделить код

Код:

/*
Name: Remove blank
Version: 0.1
Author: profiT
Description: removes target='_blank' links
             http://usercss.ru/styles/remove_blank/
*/


a[href][target='_blank'] {
    -o-link: attr(href) !important; 
    -o-link-source: current !important;
    }


или это какая-то нестандартная фишка Оперы, не имеющая аналогичного воплощения в Лисе? Кажется мне, что CSS не может менять HTML-код...

okkamas_knife спасибо!

Александр Колесников пишет

Просветите, пожалуйста, а нельзя ли в usercontent.css прописать стиль, чтоб из всех ссылок убирать  target='_blank'

Так кто ж тебе запретит ?
А вот будет ли нормально работать — не знаю.

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

Выделить код

Код:

a[href][target="_blank"] {
    -moz-binding: url("data:application/xml,%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Cbindings%20id%3D%22a-target-bindings%22%20xmlns%3D%22http%3A%2F%2Fwww.mozilla.org%2Fxbl%22%3E%0A%09%3Cbinding%20id%3D%22a-target-_blank%22%3E%0A%09%09%3Cimplementation%3E%0A%09%09%09%3Cconstructor%3E%0A%09%09%09%09this.removeAttribute(%22target%22)%3B%0A%09%09%09%3C%2Fconstructor%3E%0A%09%09%3C%2Fimplementation%3E%0A%09%3C%2Fbinding%3E%0A%3C%2Fbindings%3E%0A") !important;
}

Dumby Спасибо!
Я думал, что у меня применение  browser.link.open_newwindow =1   (replaces existing URL page in the current browser tab with the link contents) вызвало то, что при клике по лупе в строке поиска открывало результаты в текущей вкладке. Единичку я как раз поставил для борьбы с эффектом target='_blank'. Оказалось, что эта настройка в about:config не при чём и воевать с target='_blank' другими способами нет нужды... Просто это баг лисы - по ENTER настройка browser.search.openintab=TRUE срабатывает и результаты поиска открываются в новой вкладке, а по ЛКМ по значку лупы - в текущей.  Баг 513180 https://bugzilla.mozilla.org/show_bug.cgi?id=513180. Дело в том, что я как раз снёс TMP, а там этот баг как-то обходился, по-видимому...

ALL Можно ли написать CB-код для обхода этого бага, а то уж больно привык кликать ЛКМ по лупе?

Александр Колесников
Ну, раз привык

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

Выделить код

Код:

(bar => {
    if (!bar) return;
    var btn = document.getAnonymousElementByAttribute(bar, "anonid", "search-go-button");
    var prfx = 'event.button == 0 && gPrefService.getBoolPref("browser.search.openintab")\n\t'
        + '? doSearch(value, event.shiftKey ? "tabshifted" : "tab")\n\t: ';
    function setAttr(arg) btn.setAttribute("onclick", (arg ? "" : prfx) + "handleSearchCommand(event);");
    setAttr(); addDestructor(setAttr);
})(BrowserSearch.searchBar);

Dumby Спасибо, багфикс работает! :)

wolwerine Поправьте, пожалуйста, в Go and paste: если в буфере обмена находится не URL, а текст, то он по ПКМ (открыть в текущей вкладке) ищется в текущем поисковике, а по СКМ  (открыть в новой вкладке)- не ищется с выдачей ошибки

Формат адреса неверен. URL недействителен и не может быть загружен.

Александр Колесников
Ну, раз не ищется

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

Выделить код

Код:

this.onclick = e => {
    var arg, paste;
    switch (e.button) {
        case 2:
            if (e.ctrlKey || e.shiftKey) return;
            e.preventDefault();
        case 1:
            if (!(paste = readFromClipboard())) return;
            if (e.button == 1) arg = new MouseEvent("", {ctrlKey: true});
            gURLBar.value = paste;
        case 0:
            gURLBar.handleCommand(arg);
    }
}
this.onmouseenter = () => this.tooltipText = readFromClipboard() || this.label;

Dumby Респект!

Напишите, пожалуйста, код "Не открывать пустые вкладки при закачке файлов" типа zip, pdf...

P.S. Уже есть: Releases · Infocatcher/Close_Download_Tabs · GitHub

Народ, что то не нахожу инфы, а можно добавлять кнопки в "автозагрузку"? Вот есть у меня кнопка "добавить страницу в закладки по двойному клику". Для ее работы, кнопку надо вытащить на панель и жмакнуть после каждого перезапуска браузера, а можно этот процесс автоматизировать и убрать кнопку с панели? В CB полный ноль, если глупость сморозил, извините.

Pony_Smile_Pack пишет

Это что-то с ней не то, раз надо по ней жмакать.

У меня она по другому принципу работает. Я один раз жму на CB на панели и после этого, до перезагрузки, страницы добавляются в закладки по двойному клику на нужной папке, а не как у вас - всегда в корневой каталог. Мой вариант явно удобней когда в закладках все по папкам отсортировано, вот бы еще при каждом перезапуске кнопку не нажимать....

mozillka_ru пишет

Я один раз жму на CB на панели и после этого, до перезагрузки, страницы добавляются в закладки по двойному клику на нужной папке, а не как у вас - всегда в корневой каталог. Мой вариант явно удобней когда в закладках все по папкам отсортировано, вот бы еще при каждом перезапуске кнопку не нажимать....

А вот вариант ещё удобней и главное продолжает работать даже после перезагрузки. :)

mozillka_ru пишет
Pony_Smile_Pack пишет

Это что-то с ней не то, раз надо по ней жмакать.

У меня она по другому принципу работает. Я один раз жму на CB на панели и после этого, до перезагрузки, страницы добавляются в закладки по двойному клику на нужной папке, а не как у вас - всегда в корневой каталог. Мой вариант явно удобней когда в закладках все по папкам отсортировано, вот бы еще при каждом перезапуске кнопку не нажимать....

[CB]Двойным левым кликом добавить закладку в папку закладок. | Форум Mozilla Россия

Pony_Smile_Pack

Это мне и было нужно, спасибо!

ps а саму кнопку с панели убрать? :blush:
или такого сам принцип действия кнопок не позволяет?

mozillka_ru пишет

Pony_Smile_PackЭто мне и было нужно, спасибо!ps а саму кнопку с панели убрать? или такого сам принцип действия кнопок не позволяет?

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

Проверил - не работает! :) Но это я уже обнаглел конечно (просто любитель минимализма), а CB у меня всего одна, я про них узнал когда меня плагин Add Bookmark Here своими глюками задолбал и пришлось искать замену. Тему с готовыми кнопками пролистывал, чет ничего больше не зацепило.

okkamas_knife

Спасибо, я уже нашел вторую полезную кнопку, которая в один клик показывает\скрывает дополнительную панель и перетащил на неё все редко используемые кнопки :).

подскажите кнопку перезагрузки для CB можно разместить в главном меню как на картинке?

6169135.png

Александр Колесников пишет

wolwerine Поправьте, пожалуйста, в Go and paste

Обновлено.

подскажите пожалуйста.хотел кнопку для запуска раширения fire commander создать,а кннопку расширения убрать потому-что она его только в плавающем окне запускает. сделал запуск по скм во вкладке, а по лкм хотел чтобы как раньше вызывалось. у него есть горячяя клавиша alt-c для запуска, а послать эту комбинацию не выходит. видел несколько вариантов,но ничего не получается,сам я ноль в этом деле. подскажите пожалуйста что надо вписать. сейчас код кнопки выглядит так:

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

Выделить код

Код:

/*Initialization Code*/
                   
// Fire Commander(в боковой панели)
function lbMouse(){
sendKeyEvent({ alt: true, keyCode: "DOM_VK_C" });
};

// Fire Commander(во вкладке)
function mbMouse(){
getBrowser (). selectedTab = getBrowser (). addTab ("chrome://FireCommander/content/FireCommander.xul")
};

this.onclick = function(event) {
   if(event.button == 0) {
// Действие при клике ЛКМ
lbMouse();
    }
    else if(event.button == 1) {
        // Действие при клике СКМ

mbMouse();
    }
};


спасибо.

Поправьте кто нибудь VT2 очень надо. Заранее благодарю

okkamas_knife пишет

сам подход изначально неверный, там надо не нажатие клавиши посылать а посмотреть какая команда вызывается нажатием и использовать её.
если нужное тебе действие есть в меню то используй DOM Inspector  чтоб посмотреть какая там команда (её и вписывай в кнопку) как пользоваться им смотри в готовых кнопках заглавный пост там есть ссылка на инструкцию с картинками

Вот я давно хотел узнать на этот счет. Если берем команду для кнопки, в каких случаях надо писать goDoCommand ("..."),  а когда onCommand, а когда ничего не добавлять, а просто вписать команду?

skynet281978 пишет

подскажите кнопку перезагрузки для CB можно разместить в главном меню как на картинке?

http://savepic.ru/6169135.png

Во, как раз сам решил себе запилить. У меня работает. Вроде :D
Положите код в любую Custom Buttons кнопку, в инициализацию. Не обязательно создавать новую CB кнопку, можно использовать уже существующую.

Выделить код

Код:

(function() {
    const restartbtnId = 'ui-restart-button';
    var restartbtn = document.getElementById(restartbtnId);
    
    if(!restartbtn){
        restartbtn = document.createElement('toolbarbutton');
        restartbtn.id = restartbtnId;
        restartbtn.tooltipText = "Перезапустить Firefox";
        restartbtn.onclick = function(event){
            if(event.button == 0) {
                var appStartup = Components.classes["@mozilla.org/toolkit/app-startup;1"]
                .getService(Components.interfaces.nsIAppStartup);
                appStartup.quit(appStartup.eForceQuit | appStartup.eRestart);
            }
        };
        restartbtn.setAttribute('style', 'padding-right: 11px; padding-left: 11px; list-style-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH1QUKCjI2BicMFgAAA0FJREFUeNqlk29oG3Ucxp/f/c8luaRJujQm7RbHLK4dwobaKrWTdX/YBAcDfaEizheCL/ayL9SpL3wxZDDwhY4hyqY4HYh04hiy1o11GyOidGi1o7t0bZo/veTSyyV3l7vLnS+W+sK99Pvygefz5fnyfIH/OeQhIfPeHikWfBkU9XQkKvZoumXZlqNYmnrSL5z8EUAHgP8wIP0uHY2Hzr76ysjhF/ZvD7IBHmrLhW51QDwPV678aX5/4easNf/+YQDmBoTpmkOxRPjSqY+PjAw/nmJPTxdRVQ0YLRNUgAcEDgYXCUh9yRGrMP48GtdmupAHgN6k9Pm5M689K0aC1EcXZPxx9fZ6WV4u+5695hMuLsYTKSYUErRySYF+SwPAA7AA+AzpPx7Zti059uhAD/XB+UXc+uHnauXOd8d9PTcPwADgtrhMBHzmEThKC76tA7D/jZBM9xz7cHJf3427GkqLK+26fP0TX8/NAVgC0ADgwS4Q2AUGAENC2wmXfX2ScNwbnU7nGhMIi8PxeJCamilieUFW26WpWQCrAGrdTQAANrmXEgYOHaU59p0ndu9I84lN3PWvf3qSYVlGMGwPvuuCYZl2N1sdgLNhjj3z6QGaZ07tnhje3P9YX+CG3ERhRQNN2WsMxbFNVbeR7BURkCSJiQyGXG3B28jYf+jcifGxrW/vGdsanpWbuDyvoWV7IKYJ4jZkql6vf3b15pKeToUxOJSJpkePTQIQAFAAQBGoatPxv8opuLNq4IFG4BiWS6zSIt26f3nVSR48+tSuTExKhIgDLoXefRPiwITO9+4s0EJPsFaz9rJBMQyeI07HB/Ep2JU1w8xPf0sAYPDIly/2Z9NfHDg4FDNsH6bpoLCy7uTzVXXL5riUzcYCDdvDr7IFzXLg2h3od2W1dPHNl2gAqP01dY9Nj7eq6/5ofJMkeBRBJCrSO4eSoXBUZHNLJlaqHaj3i3q7WNE9jheIZWr138+ep7uH9mrzF+cQ3bFUVMiw1nD5hkXYfLVNFmTNV5aVZqNcqSi5b04ot0+fCad2xWz13i/64vQc+c9ncgDifaNvPReIZYeESGKL3Vqv1RdmflP/vpTvNrMMoA0gCsD6B3vab6ot2QOXAAAAAElFTkSuQmCC)');
        
        var quitbtn = document.getElementById('PanelUI-quit');
        quitbtn.parentNode.insertBefore(restartbtn, quitbtn);
        quitbtn.parentNode.insertBefore(document.createElement('toolbarseparator'), quitbtn);
    }
})();

Подскажите,что подправить,что бы заработала кнопка на 34-й лисе?

VORON пишет

Подскажите,что подправить,что бы заработала кнопка на 34-й лисе?

Если ты воспользовался советом №505, то должна работать. Во всяком случае у меня в [nightly] работает.

voqabuhe
Да уж :blush:
Сам же просил и забыл

Попалась мне такая кнопочка

"ABP EHH"

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//custombuttons2.com/%22%3E%0A%20%20%3CCb2Ver%3E3.0.0%3C/Cb2Ver%3E%0A%20%20%3Cname%3EABP%20EHH%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAABh0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjM2qefiJQAAAdVJREFUOE+lk79LAmEYx2sI+oHQErQ0NDSJblY4NNkfELhFQ0ENQkGCUMSFP0BMCqMhQiIrSxD8A2xpkMIghwizJXJxddHj3jvv7Nv7vGTkqQ113APHy30/z/d57nv96Ovj9z8uM+D49HSdF3rU0c9WQtsCcMFAYn9/5W5hAbWhoa71NDeH82g0yN8dJlAbgMQ5t7unuAUtuFy4DoUkDhn5BpDt3zqbHRXm53HBnfwEiM51mw1qIAB5dhby9DTUvT2oh4dQPB7ITie0gwNosRjqdjuS4TDaARYLtLU1fFSrUFZXoSwuwnh+BvP7Yby8QPF6YeTz0G9v0UilcBWPmwDj49CiUeiFAlgwCGV5Gcb7Oxq5HPSbG7ClJQE0ikXoDw+4SiTaAfXJSTSyWej399CSSbDNTRivr1C3t4WI7eyg+fYG7ewMdau1cwR5ZgbNSkWI9MdHMXuzVIK6u4tmuQyVu9PSadSmpsS+Onag8kUxSRJ0mpdtbIhujUwGbGsLMt888/lQm5joCjiikPQKkPm85HDgMhK5bAsSJYxC0hUyOIgaFbde5J84LUknPDuj5igPU8IoJB2QLwB1/hKPdUSZDiielDBaULci29S59UN9O6CHv9YnyBQiGHRETHQAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B//%20Open/Close%20the%20Adblock%20Plus%3A%20Element%20Hiding%20Helper%0AehhSelectElement%28%29%3B%5D%5D%3E%3C/code%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B//%20Check%20for%20Custom%20Buttons%B2%0Aif%20%28typeof%20custombuttons.uCbuttonButes%20%21%3D%20%27function%27%29%20%7B%0A%20%20alert%28%20%22This%20Button%20requires%20the%20Custom%20Buttons%25s%20Extension%22.replace%28%20/%25s/%2CString.fromCharCode%28%20178%20%29%20%29%20%29%3B%0A%20%20this.disabled%28true%29%3B%0A%7D%0A%0A//%20Initialise%20the%20tooltip%0Athis.tooltipText%20%3D%20%22Toggle%20ABP%3A%20Element%20Hiding%20Helper%22%3B%0A%0A%0A/*-------------------%20Attributes%20Block%20Start%20------------------*/%0A%0Athis.setAttribute%28%27author%27%2C%27Rawny%27%29%3B%0Athis.setAttribute%28%27version%27%2C%271%20%282009-04-20%29%27%29%3B%0Athis.setAttribute%28%27homepage%27%2C%20%27http%3A//custombuttons2.com/forum/buttons/buttons-database/toggle-adblock-plus-element-hiding-helper.html%27%29%3B%0Athis.setAttribute%28%27dependency%27%2C%27FF3.0*%2C%20CB2%202.0.9*%27%29%3B%0Athis.setAttribute%28%27status%27%2C%27Complete%27%29%3B%0Athis.setAttribute%28%27public%27%2Ctrue%29%3B%0A%0A/*-------------------%20Attributes%20Block%20End%20-------------------*/%5D%5D%3E%3C/initcode%3E%0A%20%20%3Caccelkey%3E%3C%21%5BCDATA%5B%5D%5D%3E%3C/accelkey%3E%0A%20%20%3Chelp%3E%3C%21%5BCDATA%5BClick%20the%20button%20to%20open%20the%20Adblock%20Plus%3A%20Element%20Hiding%20Helper%20%28ABP%20EHH%29%20or%20close%20it%20if%20you%20are%20already%20in%20it.%5D%5D%3E%3C/help%3E%0A%3C/custombutton%3E


Я так понимаю что она должна запускать Element Hiding Helper для Adblock Plus. В 34 она не работает. Может кто-нибудь сможет разобраться в чём причина и починит?

Mishania
Есть гораздо более функциональная кнопка.
https://forum.mozilla-russia.org/viewto … 06#p543706

villa7
Мне нужна кнопка которая включает функционал расширения Element Hiding Helper, а не сама кнопка. Я наверно неправильно понял назначение"ABP EHH".

Mishania
А смысл? Это то расширение которое включается лишь по необходимости, всё остальное время оно будет отключено, не отжирая ресурсов. Нет смысла заменять его кнопкой, если только эта причина.

villa7
Вы меня не понимаете. Я хочу чтоб мне не приходилось каждый раз нажимать на меню ABP что-бы вызвать функцию блокировки.  В этом весь смысл. А ресурсов у меня хватает и ничего страшного если расширение будут постоянно включено, особенно если учесть что каждый раз придётся перезагружать браузер для включения-выключения.

Mishania
Действительно не пойму. А как тогда вызывать функцию скрытия если не нажимать АВР?

villa7
Сейчас для того что-бы вызвать функцию "скрыть элемент на странице", мне надо нажать на значок ABP и выбрать в открывшемся меню функцию.
484f32809f065667d931307f5acf61d2.jpeg
Я хочу чтоб при нажатии на кнопку сразу включалась функция "скрыть элемент на странице". Например как в кнопке Attributes Inspector. Если вы не можете помочь, или опять не поняли что требуется - то не надо отвечать.

Mishania пишет

Мне нужна кнопка которая включает функционал расширения Element Hiding Helper, а не сама кнопка. Я наверно неправильно понял назначение"ABP EHH".

ABP и Element Hiding Helper должны быть включены.

Выделить код

Код:

var cm = document.getElementById("abp-toolbar-popup");
cm.collapsed = true;
cm.openPopup();
document.getElementsByAttribute("label", "Скрыть элемент на странице")[0].doCommand();
cm.hidePopup();
cm.collapsed = false;

bunda1
Спасибо, вы как всегда спасли.

можно ли подправить кнопку https://forum.mozilla-russia.org/viewto … 47#p531447

bunda1
Здравствуйте.
Установил FF 34 и скрипт изменения масштаба страниц снова перестал работать.
Скрипт работает через дополнение UC

Ссылка на скрипт (4кб)
http://www.adrive.com/public/hfF4ZA/ucjs_statusbar_zoom_panel_1.3.uc.zip

Содержание скрипта

Выделить код

Код:

// ==UserScript==
// @name            ucjs_statusbar_zoom_panel_1.3.uc.js
// @namespace        http://bbs2ch.sourceforge.jp/uploader/upload.php
// @description        г‚№гѓ†гѓјг‚їг‚№гѓђгѓјгЃ«г‚єгѓјгѓ еЂ¤г‚’иЎЁз¤єгѓ»е¤‰ж›ґгЃ™г‚‹гѓ‘гѓЌгѓ«г‚’иїЅеЉ гЃ™г‚‹гЂ‚
// @include            main
// @author            otokiti
// @compatibility    WindowsXP / Ubuntu8.04(gnome)
// @compatibility    Firefox 3.0 - 3.6a1pre
// @compatibility    userChrome.js 0.7 - 0.8 / userChromeJS 1.0
// @compatibility    Sub-Script/Overlay Loader v3.0.24mod
// @version            0.1: 08/10/21 初版
// @version            0.2: 08/10/23 г‚єгѓјгѓ еЂ¤д»Ґе¤–гЃ®гѓЎгѓ‹гѓҐгѓјг‚’иїЅеЉ 
// @version            0.3: 08/11/18 uc.xul から uc.js へ変更
// @version            0.4: 08/12/13 Zoom 関係の関数の書き換える様に変更
// @version            0.5: 09/01/22 パネル上のホイール・スクгѓгѓјгѓ«гЃ§г‚єгѓјгѓ 
// @version            0.6: 09/02/18 onLocationChange гЃ®гѓ•гѓѓг‚ЇгЃ«ж°—гЃҐгЃ„гЃ¦гЃ„гЃЄгЃ‹гЃЈгЃџгЃ®гЃ§иїЅеЉ гЃ—гЃџ
// @version                          thanks: http://pc11.2ch.net/test/read.cgi/software/1230791860/717
// @version            0.7: 09/02/19 з›ґжЋҐж•°еЂ¤гЃ§жЊ‡е®љгЃ—гЃ¦г‚єгѓјгѓ еЂ¤г‚’е¤‰ж›ґгЃ™г‚‹гѓЎгѓ‹гѓҐгѓјг‚’иїЅеЉ 
// @version            0.8: 09/02/20 メニューが toolkit.zoomManager.zoomValues гЃЁеђЊжњџгЃ™г‚‹гѓўгѓјгѓ‰г‚’иїЅеЉ гЃ—гЃџ(default)гЂ‚
// @version            0.9: 09/02/21 ホイール・スクгѓгѓјгѓ«ж™‚гЃ«гѓЎгѓ‹гѓҐгѓјгЃЊе‡єгЃ¦гЃ„г‚‹е ґеђ€гЃЇж¶€гЃ™ж§˜гЃ«гЃ—гЃџгЂ‚
// @version            1.0: 09/02/21 onLocationChange の引数を忘れていたのを修жЈ
// @version                           thanks: http://pc11.2ch.net/test/read.cgi/software/1230791860/757
// @version            1.1: 09/05/12 Zoom 関係の関数を書き換え方法の変更とその他微修жЈгЂ‚
// @version                          з”»йќўдёЉгЃ§гЃ® Ctrl+<マウススクгѓгѓјгѓ«> гЃ«е†ЌеЇѕеїњгЂ‚пјЉжіЁж„Џ
// @version            1.2: 09/05/13 гѓЎгѓ‹гѓҐгѓјгЃ®ж•°еЂ¤жЊ‡е®љгЃ§г‚єгѓјгѓ г‚’е¤‰ж›ґгЃ—гЃџе ґеђ€г‚їгѓ–гЃ®е€‡г‚Љж›їгЃ€гЃ«еЇѕеїњгЃ—гЃ¦гЃ„гЃЄгЃ‹гЃЈгЃџгЃ®г‚’дї®жЈ(0.7から)гЂ‚
// @version            1.3: 09/05/18 _handleMouseScrolled だけ別扱いにしてみる。
// @Note            1) г‚№гѓ†гѓјг‚їг‚№гѓђгѓјгЃ«г‚єгѓјгѓ еЂ¤гѓ»гѓўгѓјгѓ‰г‚’иЎЁз¤єгЃ™г‚‹гѓ‘гѓЌгѓ«г‚’иїЅеЉ гЃ™г‚‹гЂ‚
// @Note            2) パネルのコンテクスト・メニューにズーム・メニューを表示する。
// @Note            3) パネル上のホイール・スクгѓгѓјгѓ«гЃ§г‚єгѓјгѓ гЂ‚
// @Note            4) гѓ‘гѓЌгѓ«гѓ»г‚ЇгѓЄгѓѓг‚ЇгЃ§гѓЄг‚»гѓѓгѓ€гЂ‚
// @Note            5) 直接ズームを指定可能なメニューリスト。
// @Note    仕様    _SYNC_ZOOMVALUES гЃЊ false гЃ®е ґеђ€ toolkit.zoomManager.zoomValues г‚„ USER_ZOOM_LEVEL の値を変更すると
// @Note            Zoom In(Ctrl++)/Zoom Out(Ctrl+-)гЃ§е¤‰гЃ€гЃџг‚єгѓјгѓ еЂ¤гЃЊгѓЎгѓ‹гѓҐгѓјгЃ«з„ЎгЃЏзµђжћњгѓЃг‚§гѓѓг‚ЇгЃЊд»˜гЃ‹гЃЄгЃ„е ґеђ€гЃЊгЃ‚г‚‹гЂ‚
// @Note    еЇѕз–    A) _SYNC_ZOOMVALUES г‚’ true гЃ§дЅїгЃ†гЂ‚
// @Note            B) 別に構わないとそのまま使う。
// @Note    пјЉжіЁж„Џ    Ctrl+<マウススクгѓгѓјгѓ«> гЃ§гЃЇз‹¬и‡Єг‚№гѓ†гѓѓгѓ—гЃЊе€©з”ЁгЃ•г‚Њг‚‹з‚єгѓЎгѓ‹гѓҐгѓјгЃ®еЂ¤д»Ґе¤–гЃ«гЃЄг‚‹е ґеђ€гЃЊжњ‰г‚‹гЂ‚
// @Note    ----------------------------------------------------------------------------------------------
// @Note    пјЉгЃ“гЃ®г‚№г‚ЇгѓЄгѓ—гѓ€гЃЇ Alice0775ж°ЏдЅњгЃ®ж‹ЎејµгЂЊDefault FullZoom Level 3.5гЂЌг‚’еЏ‚иЂѓгЃ«гЃ•гЃ›гЃ¦й ‚гЃЌгЃѕгЃ—гЃџгЂ‚
// @Note    ----------------------------------------------------------------------------------------------
// ==/UserScript==
var ucjs_zoom = {
// ------------------------------ д»»ж„ЏгЃ«иЁе®љ -----------------------------------------------
    // 
    _TAGET_ID:    "page-report-button",

    // 
    _ZOOM_MODE: [ { txt: "\u041c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u044e \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0443", color: "#00000" },                     
                  { txt: "\u041c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u043a\u0441\u0442", color: "#096CE6" } ],    

    // 
    _SYNC_ZOOMVALUES: true,

    // 
    USER_ZOOM_LEVEL: [ 30, 50, 67, 80, 90, 100, 110, 120, 133, 150, 170, 200, 240, 300 ],
//    USER_ZOOM_LEVEL: [ 30, 50, 75, 100, 150, 200, 250, 300 ],
// --------------------------------------------------------------------------------

    // 
    ZoomLevel: [ ],

    // 
    init: function() {

        // Zoom 
        var _cmd = "ucjs_zoom.updateZoom();$&";
        // toggleZoom
        eval("ZoomManager.toggleZoom = " + ZoomManager.toggleZoom.toString().replace(/}$/, _cmd));
        // reset
        eval("FullZoom.reset = " + FullZoom.reset.toString().replace(/}$/, _cmd));
        // enlarge
        eval("FullZoom.enlarge = " + FullZoom.enlarge.toString().replace(/}$/, _cmd));
        // reduce
        eval("FullZoom.reduce = " + FullZoom.reduce.toString().replace(/}$/, _cmd));
        // onLocationChange
        addEventListener("TabAttrModified", function(e) {        
           if ( e.target.linkedBrowser.currentURI.spec == gBrowser.currentURI.spec ) {          
                ucjs_zoom.updateZoom();
                }
        }, true, gBrowser.tabContainer );        
        // _handleMouseScrolled
        _cmd = "setTimeout(ucjs_zoom.updateZoom, 0); $&";
        eval("FullZoom._handleMouseScrolled = " + FullZoom._handleMouseScrolled.toString().replace(/}$/, _cmd));
    
        
        // 
        if (this._SYNC_ZOOMVALUES) {    // toolkit.zoomManager.zoomValues 
            var SysZoomLevel = Cc["@mozilla.org/preferences;1"].getService(Ci.nsIPrefBranch)
                        .getCharPref("toolkit.zoomManager.zoomValues").split(",");
            for (var i=0; i<SysZoomLevel.length; i++) this.ZoomLevel.push(parseInt(parseFloat(SysZoomLevel[i])*100));
        } else {                        
            this.ZoomLevel = this.USER_ZOOM_LEVEL;
        }

        // 
        var zoomPanel = document.createElement("statusbarpanel");
        zoomPanel.setAttribute("id", "ucjs_zoom_statuslabel");
        zoomPanel.setAttribute("context", "ucjs_zoom-context");
        zoomPanel.setAttribute("onclick", "ucjs_zoom.click_StatusLabel(event);event.stopPropagation();");
        var targetPanel = document.getElementById(this._TAGET_ID);
        targetPanel.parentNode.insertBefore(zoomPanel, targetPanel.nextSibling);

        // 
        var MainPopup = document.getElementById("mainPopupSet");
        var PopupMenu = MainPopup.appendChild(document.createElement("menupopup"));
        PopupMenu.id = "ucjs_zoom-context";
        PopupMenu.setAttribute("oncommand", "event.stopPropagation();");
        PopupMenu.setAttribute("onpopupshowing", "ucjs_zoom.show_Popup(event);");
        ucjs_zoom.updateZoom();

        // 
        zoomPanel.addEventListener("DOMMouseScroll", function(event){
            ucjs_zoom.wheelZoom(event);
        }, false);
    },

    // 
    show_Popup : function(e) {
        var aPopup = e.target;
        for(var i = aPopup.childNodes.length - 1; i >= 0; i--) {
            aPopup.removeChild(aPopup.childNodes.item(i));
        }

        // 
        for (var i = ucjs_zoom.ZoomLevel.length-1; i >=0 ; i--) {
            var tempItem = document.createElement("menuitem");
            tempItem.setAttribute("label", ucjs_zoom.ZoomLevel[i] + "%");
            tempItem.setAttribute("oncommand","ucjs_zoom.set_Zoom(" + ucjs_zoom.ZoomLevel[i]/100 + ");");
            tempItem.setAttribute("type", "checkbox");
            if(ucjs_zoom.ZoomLevel[i] == Math.floor((ZoomManager.zoom + 0.005) * 100) ){
                tempItem.setAttribute("checked",true);
            }
            aPopup.appendChild(tempItem);
        }

        var tempItem = document.createElement("menuseparator");
        aPopup.appendChild(tempItem);

        // 
        var popup = document.getElementById("viewFullZoomMenu").lastChild;
        for (var i = 0; i < popup.childNodes.length; i++) {
            var tempItem = popup.childNodes[i].cloneNode(true);
            if (tempItem.id) tempItem.id = "ucjs-" + tempItem.id;
            aPopup.appendChild(tempItem);
        }
    },

    // 
    set_Zoom: function(n) {
        var markupDocumentViewer = getBrowser().markupDocumentViewer;
        if (!markupDocumentViewer) return;

        if (ZoomManager.useFullZoom) {
            if (markupDocumentViewer.textZoom != 1) markupDocumentViewer.textZoom = 1;
            if (markupDocumentViewer.fullZoom != n) markupDocumentViewer.fullZoom = n;
        } else {
            if (markupDocumentViewer.textZoom != n) markupDocumentViewer.textZoom = n;
            if (markupDocumentViewer.fullZoom != 1) markupDocumentViewer.fullZoom = 1;
        }
        ucjs_zoom.updateZoom();
        return n;
    },

    // 
    wheelZoom: function(e) {
        ucjs_zoom.hidePopup(document.getElementById("ucjs_zoom-context"));
        // 
        if (e.detail > 0) FullZoom.reduce();
        else FullZoom.enlarge();
    },

    // 
    hidePopup: function (menu) {
        var popupBox = null;
        var menuBox = null;
        try {
            popupBox = menu.boxObject.QueryInterface(Ci.nsIPopupBoxObject);
        } catch (e) {}
        try {
            menuBox = menu.parentNode.boxObject.QueryInterface(Ci.nsIMenuBoxObject);
        } catch (e) {}

        if (menuBox) menuBox.openMenu(false);
        else if (popupBox) popupBox.hidePopup();
     },

    // 
    click_StatusLabel:function(e){
        if(e.button != 0) return;
        FullZoom.reset();
    },

    // 
    updateZoom: function(){
        // 
        var Toggle_org = document.getElementById("toggle_zoom");
        if (Toggle_org) {
            Toggle_org.setAttribute("checked", !ZoomManager.useFullZoom);
        }
        var Toggle_ucjs = document.getElementById("ucjs-toggle_zoom");
        if (Toggle_ucjs) {
            Toggle_ucjs.setAttribute("checked", !ZoomManager.useFullZoom);
        }
        // 
        var Zoom = document.getElementById("ucjs_zoom_statuslabel");
        Zoom.setAttribute("label", Math.floor((ZoomManager.zoom + 0.005) * 100) + "%");
        Zoom.setAttribute("tooltiptext", ucjs_zoom._ZOOM_MODE[ZoomManager.useFullZoom? 0: 1].txt);
        Zoom.setAttribute("style", "color: " + ucjs_zoom._ZOOM_MODE[ZoomManager.useFullZoom? 0: 1].color + ";");
    }
}
ucjs_zoom.init();;

1fesFFFF пишет

bunda1
Здравствуйте.
Установил FF 34 и скрипт изменения масштаба страниц снова перестал работать.

Что то не смог исправить :/, может попробуй Изменить масштаб

Вот напасть, потребовалось отключать этот скрипт на одном сайте.

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

Выделить код

Код:

// ==UserScript==
// @author         Al_H
// @description    Add URL in tooltip to include more informaton
// @include        *
// @name           Add URL in tooltip
// @version 0.0.1.20141013112432
// @namespace https://greasyfork.org/users/5117
// ==/UserScript==

for(var i=0;i<document.links.length;i++) {
    if(document.links[i]) document.links[i].title+=((document.links[i].title=='')?'':'\n')+decodeURI(document.links[i].href);
}


можно как то кнопку сделать вкл/откл скрипта с перезагрузкой страницы, задолбало каждый раз на вкладку аддонов лазить.

villa7 пишет

можно как то кнопку сделать вкл/откл скрипта с перезагрузкой страницы, задолбало каждый раз на вкладку аддонов лазить.

Может поставь исключение для сайта тут: if(document.links[i] ) ну там && document.domain !==

bunda1
В исключения добавить было бы вообще замечательно. Но дело в том что в Scriptish добавляю в поле "Пользовательские исключения" адрес http://www.ex.ua/ это не срабатывает, срабатывает только если добавить конкретную страницу, что нереально. Попробовал то что ты посоветовал, в сам скрипт, но у меня он ломается, видать неправильно что то делаю. Может добавишь http://www.ex.ua/ как надо.

villa7 пишет

Но дело в том что в Scriptish добавляю в поле "Пользовательские исключения" адрес http://www.ex.ua/ это не срабатывает

А звёздочку ставишь http://www.ex.ua/* ?

voqabuhe
Точно надо * ставить, и на лбу себе наколоть, недавно другой скрипт исключал и забыл. Всем спасибо, кто откликнулся.

villa7 пишет

и на лбу себе наколоть

На лбу это конечно круто :), а вот в Greasemonkey подсказка появляется с примером http://example.com/*, при попытке добавить сайт в исключения.

voqabuhe
У меня Scriptish.

villa7 пишет

У меня Scriptish.

Да я видел выше. Это я к тому что в Greasemonkey правильно сделали, уже ну никак не забудешь.

WinXP sp3 - FF 35.0 - CB 0.0.5.8 - Autocopy+3 от 26.12.2013
При попытке выделения текста в строке имя в окне Библиотека, окно библиотеки сразу закрывается. Кнопку удалил, перезагрузил FF - все работает.
Может быть это как-то лечится?

P.S. Прошу прощения. Ошибся веткой, перенес сообщение из ветки обсуждения CB/

AlexCondor пишет

WinXP sp3 - FF 35.0 - CB 0.0.5.8 - Autocopy+3 от 26.12.2013
При попытке выделения текста в строке имя в окне Библиотека, окно библиотеки сразу закрывается. Кнопку удалил, перезагрузил FF - все работает.
Может быть это как-то лечится?

Исправил: Autocopy+3

bunda1 пишет

Исправил: Autocopy+3

Большое спасибо за помощь.

Умельцы ! А можно на СКМ (клик колесом мыши) повесить действие "копировать выделенный текст" ? :rolleyes:

HaGEN пишет

Умельцы ! А можно на СКМ (клик колесом мыши) повесить действие "копировать выделенный текст" ? :rolleyes:

Выделить код

Код:

addEventListener("mouseup", (e)=>{ e.button==1 && goDoCommand("cmd_copy") }, false, gBrowser );

bunda1
А можно объяснить что это за форма записи?

Выделить код

Код:

(e)=>{ e.button==1 && goDoCommand("cmd_copy") }

bunda1 благодарю! Завсегда помогаешь страждущим :)
зы. Ежели будет желание то можно довести до завершения это действие. Есть в about:config параметр general.autoScroll который отвечает за появление этого autoscroller-a по СКМ.
Так вот, сейчас он появляется и текс копируется. Т.е. два действия. Можно отключить глобально этот "автоскроллер", тогда норм.
Вот ежелиб сделал кто :D что-то типа

if {есть выделенный текст на странице, то отменить/destroy autoscroller}
     {goDoCommand("cmd_copy")}
else
      {do nothing()} // т.е. стандартное поведение, появляется autoscroller если нету выделенного текста
ежели фигню написал звиняйте... так тоже норм. отключил его глобально и клёва.

21-01-2015 19:16:02

rbfyec пишет

А можно объяснить что это за форма записи?

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

addEventListener("mouseup", (e)=>{ e.button==0 && goDoCommand("cmd_copy") }, false, gBrowser );

то при выделив текст и сделав ЛКМ - выделенный текст будет скопирован и убрано выделение текста. Два в одном, хехе...
0=ЛКМ, 1=СКМ, 2=ПКМ, ну и наверное так и дальше , скока есть кнопок у мыша(?)

HaGEN пишет
rbfyec пишет

А можно объяснить что это за форма записи?

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

addEventListener("mouseup", (e)=>{ e.button==0 && goDoCommand("cmd_copy") }, false, gBrowser );

то при выделив текст и сделав ЛКМ - выделенный текст будет скопирован и убрано выделение текста. Два в одном, хехе...
0=ЛКМ, 1=СКМ, 2=ПКМ, ну и наверное так и дальше , скока есть кнопок у мыша(?)

Про выбор кнопок мыши я догадался :D
Меня интересует вот это — (e)=>{...}
Это функция что ли записана каким-то причудливым образом?

Почему не

Выделить код

Код:

addEventListener("mouseup", function(e) { if (e.button==1) goDoCommand("cmd_copy") }, false, gBrowser );
rbfyec пишет

А можно объяснить что это за форма записи?

Выделить код

Код:

(e)=>{ e.button==1 && goDoCommand("cmd_copy") }

Анонимную функцию с передачей аргумента e которую запускает обработчик:
addEventListener("mouseup", function(e) {
   e.button==1 && goDoCommand("cmd_copy");
}, false, gBrowser );

можно написать короче:
(e)=>{ e.button==1 && goDoCommand("cmd_copy") }

а можно и без скобок если код для запуска не сложный в одной строке:
addEventListener("mouseup", ()=> BrowserHome(), false, gBrowser );

а можно сократить просто анонимная функцию и без обработчика:

Выделить код

Код:

(function() {        
   setTimeout(function() { custombuttons.alertSlide("alert", "function") }, 5500);
})();

вот так:

Выделить код

Код:

(() => {
   setTimeout(function() { custombuttons.alertSlide("alert", "=>") }, 5500);
})();

Тут почитай: https://developer.mozilla.org/en-US/doc … _functions

bunda1 пишет

Анонимную функцию с передачей аргумента e которую запускает обработчик:
addEventListener("mouseup", function(e) {
   e.button==1 && goDoCommand("cmd_copy");
}, false, gBrowser );

А почему здесь

Выделить код

Код:

e.button==1 && goDoCommand("cmd_copy");

а не

Выделить код

Код:

if (e.button==1) goDoCommand("cmd_copy")
rbfyec пишет

А почему здесь

Выделить код

Код:

e.button==1 && goDoCommand("cmd_copy");

а не

Выделить код

Код:

if (e.button==1) goDoCommand("cmd_copy")

можно и так:

Выделить код

Код:

if (e.button==1) goDoCommand("cmd_copy");

но с && короче, но не всё работает, например:

Выделить код

Код:

e.button==1 && return;

не будет работать, тут почитай http://learn.javascript.ru/logical-ops

HaGEN пишет

Вот ежелиб сделал кто :D что-то типа

if {есть выделенный текст на странице, то отменить/destroy autoscroller}
     {goDoCommand("cmd_copy")}
else
      {do nothing()} // т.е. стандартное поведение, появляется autoscroller если нету выделенного текста

Выделить код

Код:

addEventListener("mousedown", (e)=>{
   
   if ( e.button !== 1 ) return;
   
   var selection = document.commandDispatcher.focusedWindow.getSelection().toString();
   if ( selection == '' ) {
        var theBox = document.commandDispatcher.focusedElement;
        if ( theBox && (theBox.type == "text" || theBox.type == "textarea") ) { 
             var startPos = theBox.selectionStart;
         var endPos = theBox.selectionEnd;
         var selection = theBox.value.substring(startPos, endPos);  
             }
        };  
   selection = ( selection !== '' ) ? true : false;   

   if ( selection ) { 
        e.preventDefault();
        e.stopPropagation();
        
        setTimeout(()=> document.activeElement.blur(), 50);  
        setTimeout(()=> window.content.focus(), 300);        
        }
        
   goDoCommand("cmd_copy");
      
}, true, gBrowser );

Но мне кажется что копировать выделенный текст двойным правым кликом удобней:

Выделить код

Код:

addEventListener("dblclick", (e)=>{
  if ( e.button == 2 && !/findbar|tabbrowser/.test( e.target.localName ) ) { 
       e.preventDefault();
       goDoCommand("cmd_copy");       
       document.getElementById("contentAreaContextMenu").hidePopup(); 
       }        
}, false, gBrowser );

Афигеть ! bunda1 - кудесник.
e710dabd9aa9052b10d9297760cc1edc.gif
Просто по двойному клику у мну перевод слова во всплыв. окошке из кнопки ContextTranslate привык уже .

bunda1
спасибо за разъяснения :)

Помогите с кнопкой. Пункт создается, но действие не знаю как сделать, пробовал много, ниччё не получилося. Постоянный пункт меню при выделении текста "Открыть как ссылку". Пункт создается, с действием подмогните:

Код кнопки
// Открыть как ссылку.
//
(function() {
   if ( document.getElementById("go2link") ) return;
 
        var str = {получить в переменную выделенный текст};  // №1 хз.

   var menuItem = document.createElement("menuitem");

   menuItem.id = "go2link";
   menuItem.setAttribute("label", "Перейти по ссылке");
   menuItem.setAttribute("class", "menuitem-iconic");
   menuItem.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACIUlEQVQ4jZ2STUtUYRSAn3vfj3tnnBybUdEKTZ2gJjDQ/AHt3PWhTNAmadsq2tUPadG2JGWwRZugRbSKSAqHmkUpVMagoo7a1Rnv3Pu+LdJQYYQ6u8N5znM4nOPQJPLj079c1/1ijLlTLhbmmnFuswKQwuGSK9xn+fHpgf8RcHGoVyTbTpx3hfsuPz6d+2fBZhDRf66TdEc6K5QsDd6aGT3KOJncXatbMqiWNNJPIbSP0AqhFReGB4hjQ+dJn6XlLb4vrBiL86r09NroIUH+6k2kcJBSoJWL1gJrQQqXza06rnDItHrUd0KWK1W2g93Z0uT1EQC5b6qUPuOl2tBJHy/p4adTaP2nLIVLUI/ozCTpP93Kh0+Vy8MTL9biRjQmwQKwXd0gjhWNyBBGlkgo/IRFKwGAVoLQwHotoqennW8Ly5lGLF66e/0AWCwH86NRq0dIx2GpUiXYDqOu3o6Bvyv0DA3iJRIIJdFKoH2JtRAE4b6dbKti/usKqytbi6dy3bnnD0ZCCZafs+/RyRTKb0F5HspTKE/R3deF6zokfUkqIZn7uEjYiGdKkzfGSnuDJXClVl0nCg3Ktwgd7Z1Rvs6eiWnPJnGsZfbtvMVx3pgonjj0B832zY9N2b7BszSCHSo/1izw2MTmYblYWD3IySb9AKxUqtQ2AmOMfYK198vFQnCUOVZQ2wh2TWzulYuFR82Y5gLHMSY2t8vFwtRxQ34DLk/NkLifJmMAAAAASUVORK5CYII=");
   menuItem.setAttribute("oncommand", getBrowser (). selectedTab = getBrowser (). addTab (str));  // №2 хз.
   document.getElementById("context-copy").parentNode.insertBefore( menuItem, document.getElementById("context-copy") );

   
   document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", function() {
     menuItem.hidden = !gContextMenu.isTextSelected;
     }, false);
})();

HaGEN

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

Выделить код

Код:

(function() {
   if ( document.getElementById("go2link") ) return;
   var menuItem = document.createElement("menuitem");

   menuItem.id = "go2link";
   menuItem.setAttribute("label", "Перейти по ссылке");
   menuItem.setAttribute("class", "menuitem-iconic");
   menuItem.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACIUlEQVQ4jZ2STUtUYRSAn3vfj3tnnBybUdEKTZ2gJjDQ/AHt3PWhTNAmadsq2tUPadG2JGWwRZugRbSKSAqHmkUpVMagoo7a1Rnv3Pu+LdJQYYQ6u8N5znM4nOPQJPLj079c1/1ijLlTLhbmmnFuswKQwuGSK9xn+fHpgf8RcHGoVyTbTpx3hfsuPz6d+2fBZhDRf66TdEc6K5QsDd6aGT3KOJncXatbMqiWNNJPIbSP0AqhFReGB4hjQ+dJn6XlLb4vrBiL86r09NroIUH+6k2kcJBSoJWL1gJrQQqXza06rnDItHrUd0KWK1W2g93Z0uT1EQC5b6qUPuOl2tBJHy/p4adTaP2nLIVLUI/ozCTpP93Kh0+Vy8MTL9biRjQmwQKwXd0gjhWNyBBGlkgo/IRFKwGAVoLQwHotoqennW8Ly5lGLF66e/0AWCwH86NRq0dIx2GpUiXYDqOu3o6Bvyv0DA3iJRIIJdFKoH2JtRAE4b6dbKti/usKqytbi6dy3bnnD0ZCCZafs+/RyRTKb0F5HspTKE/R3deF6zokfUkqIZn7uEjYiGdKkzfGSnuDJXClVl0nCg3Ktwgd7Z1Rvs6eiWnPJnGsZfbtvMVx3pgonjj0B832zY9N2b7BszSCHSo/1izw2MTmYblYWD3IySb9AKxUqtQ2AmOMfYK198vFQnCUOVZQ2wh2TWzulYuFR82Y5gLHMSY2t8vFwtRxQ34DLk/NkLifJmMAAAAASUVORK5CYII=");
   menuItem.setAttribute("oncommand", "getBrowser().selectedTab = getBrowser().addTab(document.commandDispatcher.focusedWindow.getSelection().toString())");
   document.getElementById("context-copy").parentNode.insertBefore( menuItem, document.getElementById("context-copy") );

   
   document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", function() {
     menuItem.hidden = !gContextMenu.isTextSelected;
     }, false);
})();

turbot Благодарю! Всё отлично.
А какие еще есть команды для загрузки текста в адр. строку кроме getBrowser().addTab ? Т.е. сейчас оно проверяет на "правильность" и если текст не похож на URl то ничче не открывается, ибо неверный адресс, проверьте... и т.д. а ежели это одно слово - то попытка подствить спереди www. и сзади добавить .com или .ru (то что прописано в "дополнять адресс")
У меня стоит плуг KeywordSearch который отвечает за поисковики(у мну их моного штук 15) в адр. строке и для строки закреплен один поисковик(Bing)(независимо от поисковой, ее вообще нету, убрана). Если вписать слово любое в адр. строку , то оно ищет в bing , если адресс - переходит по адресу.
Вот собсна в этом и след. вопросс: мож другая какая команда для открытия вкладки есть, типа шобы для бравзера это было будто я ручками вписал "нечто" в адр. строку и нажал ALT-SHIFT ? (ALT-SHIFT не обязательно)
ежели слишком сложно/невозможно то фигсним. Так тоже отлично, хоть работает теперь для ссылок в тексте без префикса http:// для чего собсна и было задумано :)

Помогите с кнопкой Save + http://forum.mozilla-russia.org/viewtop … 40#p493040
Сама кнопка установлена, но перестала работать - нажимаю сохранить страницу как png или часть страницы, выскакивает диалог о сохранении, но сохранения не происходит((
Windows XP, Mozilla Forefox v.36

4zz

"nsIWebBrowserPersist.saveURI изменили в FF36 и для работы он теперь требует восемь параметров"

Можно скажем воткнуть «null,» посередине в

Выделить код

Код:

wbp.saveURI(url, null, null, null, null, fp.file, null);

Или сделать как у меня там, если нужна работа в нескольких версиях фокса.

Lex1 пишет

4zz

"nsIWebBrowserPersist.saveURI изменили в FF36 и для работы он теперь требует восемь параметров"

Можно скажем воткнуть «null,» посередине в

Выделить код

Код:

wbp.saveURI(url, null, null, null, null, fp.file, null);

Или сделать как у меня там, если нужна работа в нескольких версиях фокса.

Я в кодах не силен, но
"воткнуть «null,» посередине в..." - так так оно и есть в первоначальном коде
а твою кнопку тоже воткнул, правда окно сохранения в ней нужно закрывать самостоятельно)

Там семь параметров - теперь требуется восемь. Т.е.

Выделить код

Код:

wbp.saveURI(url, null, null, null, null, null, fp.file, null);

Lex1
Ура!!! заработало!
Спасибо!!!))

Когда делаешь скриншот страницы с ютюбом, то на месте ютюба - чёрный прямоугольник. Это можно как-то исправить?

difabor пишет

Когда делаешь скриншот страницы с ютюбом, то на месте ютюба - чёрный прямоугольник. Это можно как-то исправить?

Если ты про кнопку Save+ то я не знаю.

Плагины плохо захватываются (нужен wmode=opaque), html5 - нормально. Также см. http://forums.mozillazine.org/viewtopic.php?f=19&t=2663435

Lex1 пишет

Плагины плохо захватываются (нужен wmode=opaque), html5 - нормально. Также см. http://forums.mozillazine.org/viewtopic.php?f=19&t=2663435

Спасибо :)

bunda1
А можно и [CB]CB drag and go обновить? Та же беда - картинки без запроса не сохраняются. (И, может быть скажете что-нибудь?.. shuffle.gif) Спасибо.

turbot
Завтра посмотрю.

turbot пишет

bunda1
А можно и [CB]CB drag and go обновить? Та же беда - картинки без запроса не сохраняются.

Укажи в главных настройках FF папку для сохранения.

А нельзя ли сделать, чтобы текст сохранялся не в файл, а в заданный каталог ScrapBook? Пусть даже в виде текстовой заметки.

Выделить код

Код:

document.getElementById('здесь id пункта меню ScrapBook для сохранения страницы или текста в нужную папку').click();

bunda1
Спасибо за ScrapBook. Так просто... :)

Укажи в главных настройках FF папку для сохранения.

Указан "E:\", может поэтому? Или потому что [nightly]. Но не работает.

turbot пишет

Указан "E:\", может поэтому? Или потому что [nightly]. Но не работает.

Странно, я сейчас установил [nightly] и также указал

в настройках диск E:
98ecbb03d09f14b01e42f2d0442c674c.jpg

и у меня сохраняет без запроса. Может сбрось все настройки и тогда попробуй сохранить.

bunda1
Да, спасибо, на чистом профиле работает. Сбило с толку, что обнаружил неработоспособность, как раз когда с другими кнопками эта проблема появилась. Буду ковырять причину. Виноват.

А случаем ни у кого  нет кнопочки для замены Go Parent Folder?
ПС Или может для кого-нибудь не сложно сделать, если такой нет в природе. :)

voqabuhe пишет

А случаем ни у кого  нет кнопочки для замены Go Parent Folder?
ПС Или может для кого-нибудь не сложно сделать, если такой нет в природе. :)

Тогда уж заодно желательно бы сделать и Show Parent Folder

bunda1
Выручай, перестала работать кнопка переключения стилей на 36 [firefox]

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

Выделить код

Код:

// ЛКМ переключить настройки кнопки и стиль ..........
this._handleClick = function() setStyleForPages(void(run.value = !run.value));


// Создать настройки кнопки в about:config если они не существует ..........
var s = "CB" + _id.slice(20) + ".setStyleForPage";
cbu.isPref(s, false);
var previousUri = "CB" + _id.slice(20) + ".previousUri";


// Получить настройки кнопки и css код из вкладки Справка ..........
var css = self.Help;
var run = Application.prefs.get(s);
    




// Переключить css стиль для страницы ..........
function setStyleForPages(reason) {
   if ( reason == "destructor" ) return; 

   var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService); 
   var uri = makeURI("data:text/css," + encodeURIComponent(css)); 
   
   try { sss.unregisterSheet(Services[_id + "previousUri"] || uri, 0) } catch(e) {};
   Services[_id + "previousUri"] = uri;
   
   run.value && !reason && sss.loadAndRegisterSheet( uri, 0 );
};
addDestructor(setStyleForPages);
run.value && setStyleForPages();


// Подсказка для кнопки .......... 
this.tooltipText = "Л: Переключить черный фон страниц";


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

difabor пишет
voqabuhe пишет

А случаем ни у кого  нет кнопочки для замены Go Parent Folder?
ПС Или может для кого-нибудь не сложно сделать, если такой нет в природе. :)

Тогда уж заодно желательно бы сделать и Show Parent Folder

Горячо поддерживаю! show parent folder очень бы не помешала.

а поиском воспользоваться тяжело?
совсем обленились.

А разве эта кнопка существует в природе, что её можно найти поиском?

villa7,

кнопка от Infocatcher-а

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EStyle%20toggler%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bcustombuttons-stdicon-1%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%0Athis.toggleStyle%20%3D%20function%28enable%29%20%7B%0A%20%20%20%20var%20cssURI%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28this.Help%29%29%3B%0A%20%20%20%20var%20sss%20%3D%20Components.classes%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D%0A%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIStyleSheetService%29%3B%0A%20%20%20%20this.toggleStyle%20%3D%20function%28enable%29%20%7B%0A%20%20%20%20%20%20%20%20if%28enable%20%3D%3D%20undefined%29%0A%20%20%20%20%20%20%20%20%20%20%20%20enable%20%3D%20%21this.checked%3B%0A%20%20%20%20%20%20%20%20this.checked%20%3D%20enable%3B%0A%20%20%20%20%20%20%20%20document.persist%28this.id%2C%20%22checked%22%29%3B%0A%20%20%20%20%20%20%20%20var%20has%20%3D%20sss.sheetRegistered%28cssURI%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20%20%20%20%20if%28enable%20%26%26%20%21has%29%0A%20%20%20%20%20%20%20%20%20%20%20%20sss.loadAndRegisterSheet%28cssURI%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20%20%20%20%20else%20if%28%21enable%20%26%26%20has%29%0A%20%20%20%20%20%20%20%20%20%20%20%20sss.unregisterSheet%28cssURI%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20this.toggleStyle%28enable%29%3B%0A%7D%3B%0Aif%28this.checked%29%0A%20%20%20%20this.toggleStyle%28true%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%0Athis.toggleStyle%28%29%3B%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/*%u0430%u0432%u0442%u043E%u0440%20Infocatcher%20%u043A%u043D%u043E%u043F%u043A%u0430%20%22%u043F%u043E%u043C%u043D%u0438%u0442%22%20%u0441%u0432%u043E%u0435%20%u0441%u043E%u0441%u0442%u043E%u044F%u043D%u0438%u0435%20%u043F%u043E%u0441%u043B%u0435%20%u043F%u0435%u0440%u0435%u0437%u0430%u043F%u0443%u0441%u043A%u0430%20firefox%2C%20%u0442%u043E%20%u0435%u0441%u0442%u044C%20%u0431%u044B%u043B%u0430%20%u043E%u043D%u0430%20%22%u0432%u043A%u043B.%22%20%u0438%u043B%u0438%20%22%u0432%u044B%u043A%u043B.%22%20*/%0A%0A/*http%3A//userstyles.org/styles/45663/global-pseudo-brightness-control*/%0A%0A%0A@namespace%20url%28http%3A//www.w3.org/1999/xhtml%29%3B%0A%0A@-moz-document%20url-prefix%28http%3A//%29%2C%20url-prefix%28https%3A//%29%2C%20url-prefix%28ftp%3A//%29%2C%20url-prefix%28file%3A//%29%2C%20url-prefix%28about%3A%29%7B%0A%0A%0A%0Ahtml%3Aafter%20%7B%0A%0A%0A%0Acontent%3A%22%22%20%21important%3B%0A%0Aposition%3A%20fixed%20%21important%3B%0A%0Atop%3A%200%20%21important%3B%0A%0Abottom%3A%200%20%21important%3B%0A%0Aleft%3A%200%20%21important%3B%0A%0Aright%3A%200%20%21important%3B%0A%0A/*background%3A%20%23000%20%21important%3B*/%0A/*background%3A%20%23002288%20%21important%3B*/%0Abackground%3A%20-moz-linear-gradient%28top%2C%20rgba%280%2C0%2C255%2C1%29%200%25%2C%20rgba%28110%2C119%2C116%2C1%29%2050%25%2C%20rgba%2810%2C14%2C10%2C1%29%2051%25%2C%20rgba%2810%2C8%2C9%2C1%29%20100%25%29%20%21important%3B%0A/*background%3A%23CDCDFD%21important%3B*/%0Az-index%3A%2099999999%20%21important%3B%0A%0Apointer-events%3A%20none%20%21important%3B%0A%0Aopacity%3A%20.2%20%21important%7D%0A%0A%0A%0A%7D%0A%0A%0A%0A%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E


Кнопка "помнит" свое состояние после перезапуска [firefox], то есть была она "вкл." или "выкл." Не пишет в about:config. В раздел "Справка" вставить свой стиль.

SendInfo
Тоже самое, добавил стили для сайтов, некоторые сайты открывает чёрными страницами без букв, где в стиле фон чёрный. На 34 всё нормально.

villa7, а можно сам стиль. Я у себя посмотрю. Думается мне здесь дело не в js, а в css.

rbfyec пишет

А разве эта кнопка существует в природе, что её можно найти поиском?

Да нет такой кнопки, во всяком случае в свободном доступе. Это он так, чтобы в разговор встрясть :sick:, не обращай внимания.

voqabuhe пишет

А случаем ни у кого  нет кнопочки для замены Go Parent Folder?
ПС Или может для кого-нибудь не сложно сделать, если такой нет в природе. :)

А что делает это расширение?

bunda1
После поиска нужной закладки по ключевому слову, открывается  список закладок без папок их размещения.  Так вот расширение добавляет в контекстное меню закладок пункт Go Parent Folder, нажатие на который осуществляет переход в родительскую папку закладки.

voqabuhe пишет

bunda1
После поиска нужной закладки по ключевому слову, открывается  список закладок без папок их размещения.  Так вот расширение добавляет в контекстное меню закладок пункт Go Parent Folder, нажатие на который осуществляет переход в родительскую папку закладки.

А Show Parent Folder добавляет колонку в Библиотеку закладок в которой указывается Parent Folder - полезно для меток, недавних добавлений и пр. В остальных случаях - не нужна, но эту колонку можно и убирать

villa7 пишет

bunda1
Выручай, перестала работать кнопка переключения стилей на 36 [firefox]
Сайты где менял на чёрный стиль загружаются всё в чёрном, если отключить кнопку и загрузить а потом включить, то стиль срабатывает, а вот загружаться сразу с включенной кнопкой не хочет.

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

bunda1
А на 34 всё нормально было, жалко тёмные стили удалять, у меня они почти везде на постоянно посещаемых сайтах. Ладно, будем думать.
P.S. Забыл добавить, некоторые сайты с чёрным стилем открывает, а некоторые нет.

SendInfo
Вот к примеру в 36 [firefox] перестал открывать, хотя в 34 [firefox] всё нормально.

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

Выделить код

Код:

/*######################RUBOARD##################*/
@-moz-document domain("forum.ru-board.com"), 
domain("gallery.ru-board.com"),
domain("forall.ru-board.com")
{
div, body, .tit, table, td, form{background: #333333 !important; }
font, td,  a {color: #cccccc !important;}
span {color: #f2f2f2 !important;}
.dats {background: #444444 !important;}
a:link {color: #dddddd !important;}
.lgf, table {border-color: #333333 !important;}
img[src="board/temp/itech-promo/r/4.gif"], img[src="board/temp/itech-promo/r/1.gif"], img[src="board/temp/itech-promo/r/3.gif"], img[src="board/temp/itech-promo/r/2.gif"], img[src="board/temp/itech-promo/r/5.gif"], img[src="board/temp/itech-promo/r/6.gif"], img[src="board/temp/itech-promo/r/7.gif"], img[src="board/temp/itech-promo/r/8.gif"], img[src="board/temp/itech-promo/r/9.gif"], img[src="board/temp/itech-promo/r/10.gif"] 
{display: none !important;}
textarea{
-moz-appearance: none !important;
background-color: #333333 !important; 
color: #e2e2e2 !important;}}


http://forum.ru-board.com/topic.cgi?for … start=4680

villa7

кнопка от Infocatcher-а
h_1425685905_3930317_fc826df4a3.png

SendInfo
Бред какой то происходит. 36 [firefox] полностью чистая, только СВ 0.0.5.8
положил один стиль, и не фурычит.
a20ae1d6040ed04a862f9700a9ef52fe.jpeg
СВ 0.0.5.9pre1 тоже не помогает, чудеса.
Вы на какой версии проверяли, на 34 [firefox] этот же стиль нормально открывает, а на 36 уже не хочет.
Проверил на 38 [firefox] для успокоения души, открывает нормально. Как же они задолбали своими экспериментами. Придется следующих версий ждать, если опять чего нибудь не нахимичат.

voqabuhe пишет

После поиска нужной закладки по ключевому слову, открывается  список закладок без папок их размещения.  Так вот расширение добавляет в контекстное меню закладок пункт Go Parent Folder, нажатие на который осуществляет переход в родительскую папку закладки.

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

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

Выделить код

Код:

@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);

#placesContext .box-inherit.scrollbox-innerbox {
    -moz-binding: url('data:application/xml,\
\
<?xml version="1.0"?>\%0A\
<bindings xmlns="http://www.mozilla.org/xbl">\%0A\
    <binding id="placesContext_extraMenuitems">\%0A\
        <implementation>\%0A\
            <constructor>\%0A\
                <![CDATA[\%0A\
                    var before = document.getElementById("placesContext_editSeparator");\%0A\
                    var popup = this.linkedPopup = this.parentNode.parentNode.parentNode;\%0A\
                    var menuitem = popup.insertBefore(document.createElement("menuitem"), before);\%0A\
                    menuitem.id = "placesContext_updateBookmarkURL";\%0A\
                    menuitem.setAttribute("label", decodeURIComponent(\%0A\
                        "%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C%20%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D1%83"\%0A\
                    ));\%0A\
                    menuitem.setAttribute("oncommand", "this.cmd();");\%0A\
                    menuitem.cmd = function() {\%0A\
                        var id = popup._view.selectedNode.itemId;\%0A\
                        var win = Services.wm.getMostRecentWindow("navigator:browser");\%0A\
                        var {currentURI: uri, selectedBrowser: br, selectedTab: tab} = win.gBrowser;\%0A\
\%0A\
                        PlacesUtils.bookmarks.changeBookmarkURI(id, uri);\%0A\
                        PlacesUtils.bookmarks.setItemTitle(id, tab.label);\%0A\
\%0A\
                        var favicon = br.mIconURL, fs = Ci.nsIFaviconService;\%0A\
                        var faviconURI = favicon ? win.makeURI(favicon) : PlacesUtils.favicons.defaultFavicon;\%0A\
                        var private = win.PrivateBrowsingUtils.isBrowserPrivate(br);\%0A\
                        PlacesUtils.favicons.setAndFetchFaviconForPage(uri, faviconURI, true,\%0A\
                            private ? fs.FAVICON_LOAD_PRIVATE : fs.FAVICON_LOAD_NON_PRIVATE\%0A\
                        );\%0A\
                    }\%0A\
\%0A\
                    var menuitem2 = popup.insertBefore(document.createElement("menuitem"), before);\%0A\
                    menuitem2.id = "placesContext_goParentFolder";\%0A\
                    menuitem2.setAttribute("label", decodeURIComponent(\%0A\
                        "Go Parent Folder"\%0A\
                    ));\%0A\
                    function sel(view, id) {\%0A\
                        var str = "node.type == Ci.nsINavHistoryResultNode.RESULT_TYPE_FOLDER";\%0A\
                        var src = view.selectItems.toString();\%0A\
                        var code = src.replace(str + ";", "(" + str + " || " + str + "_SHORTCUT);");\%0A\
                        view.place = view.place; eval("(" + code + ")").bind(view)([id]);\%0A\
                        vis(view);\%0A\
                    }\%0A\
                    function vis(tree) {\%0A\
                        var pos = 0.5, tbo = tree.treeBoxObject;\%0A\
                        var ind = tbo.view.selection.currentIndex;\%0A\
                        var first = tbo.getFirstVisibleRow();\%0A\
                        var visibleRows = tbo.height/tbo.rowHeight;\%0A\
                        var newFirst = ind - pos*visibleRows + 1;\%0A\
                        tbo.scrollByLines(Math.round(newFirst - first));\%0A\
                    }\%0A\
                    menuitem2.setAttribute("oncommand", "this.cmd();");\%0A\
                    menuitem2.cmd = function() {\%0A\
                        var view = popup._view, id = view.selectedNode.itemId;\%0A\
                        if (view.id == "placeContent") {\%0A\
                            var plView = document.getElementById("placesList");\%0A\
                            var parentId = PlacesUtils.bookmarks.getFolderIdForItem(id);\%0A\
                            sel(plView, parentId);\%0A\
                            setTimeout(() => {view.selectItems([id]); vis(view);}, 100);\%0A\
                        } else\%0A\
                            sel(view, id);\%0A\
                    }\%0A\
                    var handler = this.linkedPopupPopupshowihgHandler = function () {\%0A\
                        var place = (popup._view.selectedNodes.length == 1) && popup._view.selectedNode;\%0A\
                        menuitem.hidden = menuitem.disabled = !(place && PlacesUtils.nodeIsBookmark(place));\%0A\
                        menuitem2.hidden = menuitem2.disabled = menuitem.hidden || !location.href.contains("a");\%0A\
                    };\%0A\
                    handler(); popup.addEventListener("popupshowing", handler);\%0A\
                ]]>\%0A\
            </constructor>\%0A\
            <destructor>\%0A\
                    this.linkedPopup.removeEventListener("popupshowing", this.linkedPopupPopupshowihgHandler);\%0A\
            </destructor>\%0A\
        </implementation>\%0A\
    </binding>\%0A\
</bindings>\
\
    ') !important;
}

Dumby
А не поправите вашу кнопку

orPaste for Stylish

Выделить код

Код:

var theSeparator = "►►►►►►►";
    theSeparator = "\n" + theSeparator + "\n";

var items = this.Help.split(theSeparator);

//====================================================================================
this.imageOn  = "data:image/gif;base64,R0lGODlhEAAQAN0DABop/8f//5zj/////+D//xpP/4rQ/xxk/xo8/0KH/3vA/xpH/1Ka/xpb/3W8/5DZ/6Lp/xow/1lo/yZr/0yU/zN6/zB1/2uz/z+IzDyEx+Hh4TJB/4bM8B9m/4/W/4jO/5be/+j//670/y50/1ed/3G1/6rM/7bF/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUsASgAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAEAAQAAAGlUCAcEgsCgNIJORhAAiezyPyAFgcDoUIgBMFICeFB2FA1jAOXSTgQQYZIIMLWiBFkBmFBADRUHSFCGMGWVVQdE4CCx5kAwQGegZdTx8IDmNkBBCIQk8GEhURDQyXBZICEiYnBwkICQMhHRgZnAIbAwECDhMCjQVqm4yMASUkv08WDRQKyw4VFEm0dBcJIxZeSQFG2kRBACH5BAkZACgALAAAAAAQABAAAAY5QJRwSCwKBUgkMcBkHpVGoRMFjaKm1ShWYJUGusPm9zq2TqfmMVPUPZfBZDAUHZ2/i0nvnZrkwotBADs=";

this.imageOff = "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACjo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/9nZ2f/Z2dn/2dnZ/6Ojo//Hx8f/srKy/62trf+tra3/o6Oj/+vr6//r6+v/6+vr/+vr6//r6+v/o6Oj/6Ojo//Z2dn/2dnZ/62trf+jo6P/uLi4/8zMzP/MzMz/zMzM/8nJyf+tra3/uLi4/+vr6//r6+v/6+vr/6Ojo/+jo6P/2dnZ/9nZ2f+jo6P/////////////////////////////////6+vr/8fHx/+9vb3/6+vr/+vr6/+jo6P/o6Oj/9nZ2f/Z2dn/ra2t///////r6+v/2dnZ/8fHx/+oqKj/2dnZ///////19fX/o6Oj/+vr6//r6+v/o6Oj/6Ojo//Z2dn/2dnZ/729vf/e3t7/4+Pj/6Ojo/+1tbX/o6Oj/7W1tf//////9/f3/6ampv+Hh4f/gICA/6Ojo/+jo6P/2dnZ/9nZ2f/R0dH/vb29/62trf+jo6P/o6Oj/729vf/19fX///////////+jo6P/2dnZ/9nZ2f+jo6P/o6Oj/9nZ2f/Z2dn/0dHR/6Ojo//Jycn/9fX1//////////////////X19f/b29v/o6Oj/9nZ2f/Z2dn/o6Oj/6Ojo//Z2dn/2dnZ/6Ojo//U1NT/////////////////9fX1/9HR0f+1tbX/o6Oj/9TU1P/Z2dn/2dnZ/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/9fX1///////R0dH/o6Oj/6Ojo/+jo6P/o6Oj/9nZ2f/Z2dn/2dnZ/9nZ2f+jo6P/o6Oj/+vr6//r6+v/o6Oj////////////urq6/6Ojo/+1tbX/o6Oj/6Ojo/+jo6P/zMzM/9nZ2f/Z2dn/o6Oj/6Ojo//r6+v/6+vr/6Ojo//W1tb////////////W1tb/0dHR/9vb2///////xMTE/6ampv/Z2dn/2dnZ/6Ojo/+jo6P/6+vr/+vr6/+oqKj/o6Oj/9bW1v/19fX/////////////////4ODg/7q6uv+mpqb/2dnZ/9nZ2f+jo6P/o6Oj/+vr6//r6+v/6+vr/6ampv+jo6P/o6Oj/6ampv+mpqb/o6Oj/6Ojo/+jo6P/xMTE/9nZ2f/Z2dn/o6Oj/6Ojo//r6+v/6+vr/+vr6//r6+v/6+vr/9vb2//U1NT/0dHR/6Ojo//Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/o6Oj/6Ojo/+jo6P/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ==";

this.image = this.imageOn;
//====================================================================================

var cbIdNumber = this.id.replace("custombuttons-button", "");
var insertButtonId = "or-paste-by-cb" + cbIdNumber;

//====================================================================================

var prefs = Components.classes["@mozilla.org/preferences-service;1"]
            .getService(Components.interfaces.nsIPrefService)
            .getBranch("custombutton.orPasteForStylish.");
try      { var pref = prefs.getBoolPref("off"); }
catch(e) { prefs.setBoolPref("off", false); };
this.off = prefs.getBoolPref("off");

//====================================================================================

const  kXULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";

function createButton(aWindow) {

var  button = document.createElementNS(kXULNS, "button");
     button.setAttribute("id", insertButtonId);
     button.setAttribute("class", "devtools-toolbarbutton");
     button.setAttribute("type", "menu");
     button.setAttribute("label", "Шаблоны");

var  menupopup = document.createElementNS(kXULNS, "menupopup");
     button.appendChild(menupopup);
     
     aWindow["textStorage" + cbIdNumber] = [];  // :D

for (var i = 0; i < items.length; i++) {

  var  menuitem = document.createElementNS(kXULNS, "menuitem");

  var      label = items[i].split("\n",1);
  var insertText = items[i].replace(label + "\n", "");
  
       aWindow["textStorage" + cbIdNumber].push(insertText)

       menuitem.setAttribute("label", label);


  var  Arg = "this.ownerDocument.defaultView" +
             ".textStorage" + cbIdNumber + "[" + i + "]";
  var  commandString = "insertCodeAtCaret(" + Arg + ")";
  
       menuitem.setAttribute("oncommand", commandString);
       menupopup.appendChild(menuitem); }
       
       return button; }
       
//===================================================================================

function isButtonAlredyPresent(aDoc) { // advice by Inforcatcher
             return !!aDoc.getElementById(insertButtonId); }

//===================================================================================

var oSvc = Components.classes["@mozilla.org/observer-service;1"]
           .getService(Components.interfaces.nsIObserverService);

var observer = { // thanks for Infocatcher

observe: function(subject, topic, data) {
         subject.addEventListener("load", this, false); },
      
handleEvent: function(e) { var doc = e.target;
                           var win = doc.defaultView;
                           var pageURL = doc.location.href;
                           win.removeEventListener("load", this, false);
                          if(!/^about:stylish-edit/.test(pageURL)) return;

    var hbox = doc.getElementById("editor-tools");
    var btn = hbox.lastChild;

    if (!isButtonAlredyPresent(doc)) {
       hbox.insertBefore(createButton(win), btn.nextElementSibling); }}};

//==================================================================================

var ww = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
         .getService(Components.interfaces.nsIWindowWatcher);

var activeWin = null;         
this.onmouseover = function() { activeWin = ww.activeWindow; }

//====================================================================================

this.run = function() { 

  if (!this.off)  { oSvc.addObserver(observer, "domwindowopened", false);
                    prefs.setBoolPref("off", false); }
                    
  if (this.off )  { oSvc.removeObserver(observer, "domwindowopened");
                    prefs.setBoolPref("off", true); }
   
  var enumerator = ww.getWindowEnumerator();
  var win = true;
  while (win) { win = enumerator.getNext();
                if (!win) return;
                var doc = win.document;
                var pageURL = doc.location.href;
                if (!/^about:stylish-edit/.test(pageURL)) continue;

        if (!this.off) { if ( isButtonAlredyPresent(doc))  continue; 

                         var hbox = doc.getElementById("editor-tools");
                         var btn = hbox.firstChild;
                         hbox.insertBefore(createButton(win), btn.nextElementSibling);
                         if (win == activeWin) win.focus(); }

        if (this.off)  { var b = doc.getElementById(insertButtonId);
            
                         while (b) { b = doc.getElementById(insertButtonId);
                                     if (b) { b.parentElement.removeChild(b); }
                                     if (win == activeWin) win.focus();  }}
            }}

//====================================================================================

if (this.off) { this.image = this.imageOff; return; }

this.run();

//====================================================================================

this.onDestroy = function() { // thanks for Infocatcher, again
    var on = !this.off;
    if(on) this.off = true;
    this.run();
    if(on) { this.off = false; prefs.setBoolPref("off", false); }};


Если с редактором последней версии Stylish'а, открытым в окне, я разобрался ((!/^about:stylish-edit/.test(pageURL)) - там при редактировании id стиля к адресу в конце добавляется), то заставить его работать с редактором, открытым во вкладке, у меня не выходит. И, если можно, еще хотелка - добавить сепаратор, который бы запихивал шаблоны между ним в подменю. Тоже с этим не заладилось, а список уже излишне разросся... shuffle.gif Спасибо.

villa7,проверял на[nightly]39 . В профиле указано. Попробуйте только эту кнопку , в ней уже ваш стиль, не меняя ничего.

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

Выделить код

Код:

custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//xsms.nm.ru/custombuttons/%22%3E%0A%20%20%3Cname%3EStyle%20toggler%20RUBOARD%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bcustombuttons-stdicon-1%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*Initialization%20Code*/%0Athis.toggleStyle%20%3D%20function%28enable%29%20%7B%0A%20%20%20%20var%20cssURI%20%3D%20makeURI%28%22data%3Atext/css%2C%22%20+%20encodeURIComponent%28this.Help%29%29%3B%0A%20%20%20%20var%20sss%20%3D%20Components.classes%5B%22@mozilla.org/content/style-sheet-service%3B1%22%5D%0A%20%20%20%20%20%20%20%20.getService%28Components.interfaces.nsIStyleSheetService%29%3B%0A%20%20%20%20this.toggleStyle%20%3D%20function%28enable%29%20%7B%0A%20%20%20%20%20%20%20%20if%28enable%20%3D%3D%20undefined%29%0A%20%20%20%20%20%20%20%20%20%20%20%20enable%20%3D%20%21this.checked%3B%0A%20%20%20%20%20%20%20%20this.checked%20%3D%20enable%3B%0A%20%20%20%20%20%20%20%20document.persist%28this.id%2C%20%22checked%22%29%3B%0A%20%20%20%20%20%20%20%20var%20has%20%3D%20sss.sheetRegistered%28cssURI%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20%20%20%20%20if%28enable%20%26%26%20%21has%29%0A%20%20%20%20%20%20%20%20%20%20%20%20sss.loadAndRegisterSheet%28cssURI%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20%20%20%20%20else%20if%28%21enable%20%26%26%20has%29%0A%20%20%20%20%20%20%20%20%20%20%20%20sss.unregisterSheet%28cssURI%2C%20sss.AGENT_SHEET%29%3B%0A%20%20%20%20%7D%3B%0A%20%20%20%20this.toggleStyle%28enable%29%3B%0A%7D%3B%0Aif%28this.checked%29%0A%20%20%20%20this.toggleStyle%28true%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*CODE*/%0Athis.toggleStyle%28%29%3B%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/*%u0430%u0432%u0442%u043E%u0440%20Infocatcher%20%u043A%u043D%u043E%u043F%u043A%u0430%20%22%u043F%u043E%u043C%u043D%u0438%u0442%22%20%u0441%u0432%u043E%u0435%20%u0441%u043E%u0441%u0442%u043E%u044F%u043D%u0438%u0435%20%u043F%u043E%u0441%u043B%u0435%20%u043F%u0435%u0440%u0435%u0437%u0430%u043F%u0443%u0441%u043A%u0430%20firefox%2C%20%u0442%u043E%20%u0435%u0441%u0442%u044C%20%u0431%u044B%u043B%u0430%20%u043E%u043D%u0430%20%22%u0432%u043A%u043B.%22%20%u0438%u043B%u0438%20%22%u0432%u044B%u043A%u043B.%22%20*/%0A/*%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23RUBOARD%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23%23*/%0A@namespace%20url%28http%3A//www.w3.org/1999/xhtml%29%3B%0A@-moz-document%20domain%28%22forum.ru-board.com%22%29%2C%20%0Adomain%28%22gallery.ru-board.com%22%29%2C%0Adomain%28%22forall.ru-board.com%22%29%0A%7B%0Adiv%2C%20body%2C%20.tit%2C%20table%2C%20td%2C%20form%7Bbackground%3A%20%23333333%20%21important%3B%20%7D%0Afont%2C%20td%2C%20%20a%20%7Bcolor%3A%20%23cccccc%20%21important%3B%7D%0Aspan%20%7Bcolor%3A%20%23f2f2f2%20%21important%3B%7D%0A.dats%20%7Bbackground%3A%20%23444444%20%21important%3B%7D%0Aa%3Alink%20%7Bcolor%3A%20%23dddddd%20%21important%3B%7D%0A.lgf%2C%20table%20%7Bborder-color%3A%20%23333333%20%21important%3B%7D%0Aimg%5Bsrc%3D%22board/temp/itech-promo/r/4.gif%22%5D%2C%20img%5Bsrc%3D%22board/temp/itech-promo/r/1.gif%22%5D%2C%20img%5Bsrc%3D%22board/temp/itech-promo/r/3.gif%22%5D%2C%20img%5Bsrc%3D%22board/temp/itech-promo/r/2.gif%22%5D%2C%20img%5Bsrc%3D%22board/temp/itech-promo/r/5.gif%22%5D%2C%20img%5Bsrc%3D%22board/temp/itech-promo/r/6.gif%22%5D%2C%20img%5Bsrc%3D%22board/temp/itech-promo/r/7.gif%22%5D%2C%20img%5Bsrc%3D%22board/temp/itech-promo/r/8.gif%22%5D%2C%20img%5Bsrc%3D%22board/temp/itech-promo/r/9.gif%22%5D%2C%20img%5Bsrc%3D%22board/temp/itech-promo/r/10.gif%22%5D%20%0A%7Bdisplay%3A%20none%20%21important%3B%7D%0Atextarea%7B%0A-moz-appearance%3A%20none%20%21important%3B%0Abackground-color%3A%20%23333333%20%21important%3B%20%0Acolor%3A%20%23e2e2e2%20%21important%3B%7D%7D%0A%0A%0A%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E


. И отключите все другие стили. Может где-то пересекаются.

SendInfo пишет

проверял на[nightly]39

Попроубуйте Инспектор открыть с включенной кнопкой. :)

villa7
Замените в коде кнопки AGENT_SHEET на USER_SHEET. У меня вроде тогда порядок со стилем.

turbot пишет

Попроубуйте Инспектор открыть с включенной кнопкой.

Да пожалуйста:

скрытый текст
%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BA%D0%BD%D0%BE%D0%BF%D0%BE%D0%BA%20CB%20|%20%D0%A4%D0%BE%D1%80%D1%83%D0%BC%20Mozilla%20%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F%20-%20Nightly.png

Dumby пишет

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

Ну как всегда просто шикарно. Огромное спасибо.:beer:. Минус ещё одно расширение. И что самое приятное стиль работает заметно быстрее, чем соответствующее расширение.
ПС Это что же получается, так со временем у всех останется одно расширение Stylish?:D

SendInfo
Я имею в виду на ру-борде, с включенным стилем.

SendInfo
Не открывает.
turbot
Заменил в кнопке AGENT_SHEET на USER_SHEET стал открывать, но тогда почему с AGENT_SHEET работает и в 38 и в 34, а в 36 не хочет, мистика.

villa7 пишет

SendInfo
Не открывает.
turbot
Заменил в кнопке AGENT_SHEET на USER_SHEET стал открывать, но тогда почему с AGENT_SHEET работает и в 38 и в 34, а в 36 не хочет, мистика.

Да мистика, что то наверно поменяли, но помнится в старых версиях <36 с USER_SHEET тоже работали не все стили

turbot,в вопросе villa7 об инспекторе ни слова, я его и не смотрел. А то что на сайте у меня работает - ранее выложен скрин.

Вот есть такая кнопка "deletion flash cookies"

Выделить код

Код:

var dir = Components.classes["@mozilla.org/file/directory_service;1"]
          .getService(Components.interfaces.nsIProperties)
          .get("Home", Components.interfaces.nsIFile);

dir.append("Application Data");
dir.append("Macromedia");
dir.remove(true);

У меня не работает. Кто может починить?

SendInfo
Оно и у меня работает. Пока Инспектор не открою. Видимо, при открытии Инспектора, повер страницы располагается какой-то прозрачный div, к которому и применяется правило

Выделить код

Код:

div, body, .tit, table, td{background: #333333 !important; }

с AGENT_SHEET, и, соответственно, он становится непрозрачным. А вот что у villa7 поверх страницы расположено - фиг знает.


villa7
Можете, кстати, просто div убрать из стиля (я не увидел, чтоб это что-то поломало в стиле), а то без AGENT_SHEET браузер перебивает некоторые стили, например к input. Либо:

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

Выделить код

Код:

@namespace url(http://www.w3.org/1999/xhtml);
@-moz-document domain("forum.ru-board.com"), 
domain("gallery.ru-board.com"),
domain("forall.ru-board.com")
{div,body,.tit,table,td{background:#333333!important}
font,td,a{color:#cccccc!important}
span{color:#f2f2f2!important}
.dats{background:#444444!important}
a:link{color:#dddddd!important}
.lgf,table {border-color:#333333!important}
img[src*="/itech-promo/"]{display:none!important}
textarea,select,input,form,img[src^='http://i.ru-board.com/images/']{filter:grayscale(100%)invert(80%)!important}}

Нужно включить поддержку свойства filter в about:config: layout.css.filters.enabled;true.

С ними можно и вовсе радикально сделать:

Выделить код

Код:

@namespace url(http://www.w3.org/1999/xhtml);
@-moz-document domain("forum.ru-board.com"), 
domain("gallery.ru-board.com"),
domain("forall.ru-board.com")
{body{background: #303030!important}
html{filter:grayscale(100%) invert(80%)!important}}

Да-да, я для себя их недавно открыл, и теперь всюду сую. :)

lokiju пишет

Вот есть такая кнопка "deletion flash cookies"

Выделить код

Код:

var dir = Components.classes["@mozilla.org/file/directory_service;1"]
          .getService(Components.interfaces.nsIProperties)
          .get("Home", Components.interfaces.nsIFile);

dir.append("Application Data");
dir.append("Macromedia");
dir.remove(true);

У меня не работает. Кто может починить?

Выделить код

Код:

var dir = Cc["@mozilla.org/file/directory_service;1"].getService(Ci.nsIProperties).get("Home", Ci.nsIFile);
dir.append("Application Data");
dir.append("Macromedia");
dir.exists() && dir.remove(true);
!dir.exists() && dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777);

turbot
Всё это понятно, непонятно почему только в 36 [firefox] не пашет, а в 34,38 нормально.

bunda1, нет не удаляет содержимое "Macromedia".

lokiju пишет

нет не удаляет содержимое "Macromedia".

Всё удаляет, положи во вкладку Код

voqabuhe пишет

lokiju пишет: нет не удаляет содержимое "Macromedia".Всё удаляет, положи во вкладку Код

Там и лежит. Но содержимому "Macromedia" все равно. И Вetter Privacy удалено по той же причине.

lokiju
Может, в этом причина:

Mozilla/5.0 (X11; Linux i686; rv:39.0) Gecko/20100101 Firefox/39.0

A: In Firefox open BetterPrivacy (Menu->Tools->BetterPrivacy) and enter the correct path of your Flash data directory. Depending on your operating system this should be one of the following paths:
Windows: %APPDATA%\Macromedia\Flash Player\
Macintosh: ~/Library/Preferences/Macromedia/Flash Player/
Linux/Unix: ~/.macromedia/Flash_Player/

Если, конечно, ваш юзерагент не врет, как мой. :rolleyes:

turbot пишет

lokijuМожет, в этом причина:Mozilla/5.0 (X11; Linux i686; rv:39.0) Gecko/20100101

Для кнопки может быть, но не для BetterPrivacy - раньше же работало . Собственно и кнопкой заинтересовался после того, как обнаружилась беда  с BetterPrivacy(оно же не поддерживается автором.)

turbot пишет

Firefox/39.0A: In Firefox open BetterPrivacy (Menu->Tools->BetterPrivacy) and enter the correct path of your Flash data directory. Depending on your operating system this should be one of the following paths:Windows: %APPDATA%\Macromedia\Flash Player\Macintosh: ~/Library/Preferences/Macromedia/Flash Player/Linux/Unix: ~/.macromedia/Flash_Player/
Если, конечно, ваш юзерагент не врет, как мой.

Нет не врет.

lokiju пишет

bunda1, нет не удаляет содержимое "Macromedia".

Да, мой код для Windows, может попробуй этот код:

Выделить код

Код:

var dir = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
dir.initWithPath("C:\\Macromedia");
dir.exists() && dir.remove(true);
!dir.exists() && dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777);

Но вместо C:\\Macromedia укажи свой свой путь к папке Macromedia, может с двумя \\

bunda1

Выделить код

Код:

var dir = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
dir.initWithPath("~/.macromedia/");
dir.exists() && dir.remove(true);
!dir.exists() && dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777);

Вот так удаляет

08-03-2015 02:54:42
bunda1
А как сделать чтобы чистилось две папки .macromedia и .adobe одной кнопкой?

lokiju пишет

bunda1
А как сделать чтобы чистилось две папки .macromedia и .adobe одной кнопкой?

Выделить код

Код:

var dir = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
dir.initWithPath("~/.macromedia/");
dir.exists() && dir.remove(true);
!dir.exists() && dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777);
dir.initWithPath("~/.adobe/");
dir.exists() && dir.remove(true);
!dir.exists() && dir.create(Ci.nsIFile.DIRECTORY_TYPE, 0777);
turbot пишет

работать с редактором, открытым во вкладке, у меня не выходит

Я попробовал запилить, вроде вставляет, наверно :/.

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

Выделить код

Код:

({
    buttonsData: [
        {
            "BUTTON 1": {
                image: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka///jnP//45z//+Oc//8pGv//tG7//4ZA//90Lv//dTD//yka////x////8f////H////x////8f//yka//8pGv//45z//+Oc//91MP//Vxr//5RM///Bev//wXr//8F6//+8df//ejP//5JK////x////8f////H//8pGv//KRr//+Oc///jnP//KRr////////////////////////////////////H//+0bv//nVf////H////x///KRr//yka///jnP//45z//0Ey/////////8b//+Oc//+1cf//ayb//+Oc/////////+X//1Ma////x////8f//yka//8pGv//45z//+Oc//9oWf//zKr//8W2//9eGv//h0L//zwa//+HQv/////////o//9mH//MiD//x4Q8//8pGv//KRr//+Oc///jnP//0Ir//2hZ//96M///NBr//14a//+bVP///+D/////////////Uxr//+Oc///jnP//KRr//yka///jnP//45z//86I//88Gv//vHX////g////////////////////4P//6KL//yka///jnP//45z//yka//8pGv//45z//+Oc//9EGv//1o/////////////////////g///TjP//h0L//yka///Vj///45z//+Oc//8pGv//KRr//yka//8pGv//PBr////l////////0Ir//1Ma//8tGv//KRr//0Aa///jnP//45z//+Oc///jnP//KRr//yka////x////8f//zwa/////f///////5pS//9PGv//h0L//yka//88Gv//Wxr//8B7///jnP//45z//yka//8pGv///8f////H//8pGv//3pb/////////////3pb//9CK///qo////////7Nr//9kHP//45z//+Oc//8pGv//KRr////H////x///ayb//0ca///elv///+D/////////////////4eHh//+aUv//ZBz//+Oc///jnP//KRr//yka////x////8f////H//9kHP//KRr//0ca//9mH///ZBz//08a//8wGv//KRr/8MyG///jnP//45z//yka//8pGv///8f////H////x////8f////H///pov//2ZD//9CK//8pGv//45z//+Oc///jnP//45z//+Oc//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ==",
                id: "Button-1-id",
                data: {
                    "Button 1 menuitem 1": `
8461257969972130394635750604812869365370931486851886606643085
6226096450462739462668149466854904346848587433786390959291217
859556681023673155470765942664293343867480839875179799100937521
                    `,
                    "Button 1 menuitem 2": `
211719589689090920082926741548657453548273240041478388434571297
    9467134014976113453058689329012399251109065413787280533498154
9033973941518880395243302959334777718781604739376219685379215

                    `,
                    "Button 1 menu 1": {
                        "Button 1 menu 1 menuitem 1": `

2051991579069607310657879309722017441960000137380237785566423
82366451515210699197167835877150747720503556174426352286230224
245703349625817314565034119246802882333194576375906748723837

                        `,
                        "Button 1 menu 1 menuitem 2": `
218722713331159305668806110918112536255804285389845217355049114
8310252513869211823316302359823897208708687865872857059938107
030564260447343283699623654152284462156273428194141667685271482

                        `,
                        "Button 1 menu 1 menu 1": {
                            "Button 1 menu 1 menu 1 menuitem 1": `
281804303220221146597605561935037356359018645418047020458794

4384938073647720339731610031281287090482630762556709830910227

399140227763397062946197043867452445291342396083641831699693
                            `
                        }
                    }
                }
            }
        },
//◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙
        {
            "BUTTON 2": {
                image: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBjP+TAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACEj///NEX//3F9//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0gf//MEH//yg6//80Rf//fYn//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACBjP//M0P//yg6//8oOv//KDr//zRF//90gf//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANrg/41UYv//M0T//yg6//8oOv//KDr//yg6//8oOv//MEH//0hX///W3P+NAAAAAAAAAAAAAAAAAAAAANbc/40xQv//LD3//ys8//8rPP//Kzz//ys8//8rPP//Kzz//ys8//8rPP//Kzv//9bc/40AAAAAAAAAAAAAAABBUP//MEP//zJF//8yRf//MkX//zJF//8yRf//MkX//zJF//8yRf//MkX//zFE//84SP//AAAAAAAAAAC0vP+NOUn//zxQ//88UP//PFD//zxQ//88UP//PFD//zxQ//88UP//PFD//zxQ//88UP//OEn//52n/40AAAAAl6H/jTpO//9GXf//Rl3//0Zd//9GXf//Rl3//0Zd//9GXf//Rl3//0Zd//9GXf//Rl3//zlN//97h/+NAAAAAKSt/40/Uf//UWr//1Fq//9Rav//UWr//1Fq//9Rav//UWr//1Fq//9Rav//UWr//1Fq//8+U///jpj/jQAAAADR1/+NNEb//1t2//9bdv//W3b//1t2//9Ycv//OUv//1hy//9bdv//W3b//1t2//9bdv//PU///7rC/40AAAAAAAAAAGZ0//9GXP//Y3///2N///9ge///QVT//4GN/404Sv//X3r//2N///9jf///Rlz//1xr//8AAAAAAAAAAAAAAAAAAAAAXGv//ztN//9AU///MEH//3yI/40AAAAAhJD/jTFC//9AU///OUr//1po///a4P+NAAAAAAAAAAAAAAAAAAAAAAAAAADDyv+Ntr7/jQAAAAAAAAAAAAAAAAAAAAAAAAAAtr7/jcrR/40AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQf9/rEH+P6xB/B+sQfgPrEHgA6xBwAGsQcABrEGAAKxBgACsQYAArEGAAKxBwAGsQeCBrEHz56xB//+sQQ==",
                id: "Button-2-id",
                data: {
                    "Button 2 menuitem 1": `
1704808533483901912593511057615798482706959734226981232605644
554364593368568792241103455746052909837105410644466183177142
8491036970273453442391718902925334048053461781577074832179994
                    `,
                    "Button 2 menu 1": {
                        "Button 2 menu 1 menuitem 1": `
9188134855185033238311828665629715333876611982705880582763672
78018885404637109297633520    043865080315035899737560093465767124
395336760559446747709696748148666879296254004631107783736979
                        `,
                        "Button 2 menu 1 menuitem 2": `
5680021603172030840205691680158991695283324356770429331137686
485734254327862726853675364881849334230932442689674286326549
42123122519280921504265246263330912181059123544347533761097224
                        `
                    },
                    "Button 2 menuitem 2": `
639315668318676304872944474192825257426286701763560448668300918
6516906487685234047552040688776748056337078135324403316543704
61982903287961345045288774833253159273727795146141071494331236
                    `
                }
            }
        },
//◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙◙
        {
            "I am a Human": {
                image: "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP///////////////////////////wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD//////wAAAP8AAAD/AAAA//////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA////////////////////////////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/////////////////wAAAP////////////////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/////////////////////////////////////////////////wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP///////////wAAAP8AAAD//////wAAAP8AAAD///////////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD///////////8AAAD/AAAA//////8AAAD/AAAA////////////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP//////////////////////////////////////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA////////////////////////////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/////////////////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ==",
                id: "Invent-this-id",
                data: {
                    "q": `
« """ ''' \`\`\`... »
                    `,
                    "template strings stuff": `
${xhtmlns}\n${xulns}\n\n${"inserted by " + _id}
                    `,
                    "¯\\_(ツ)_/¯": `
¯\\_(ツ)_/¯
                    `
                }
            }
        }
    ],
    id: "cb-stylish-paste-buttons-box",
    isStylishTab: function(doc) doc.location.href.startsWith("about:stylish-edit"),
    get buttons () {
        delete this.buttons;
        return this.createButtons();
    },
    createButtons: function() {
        var box = this.insertElement("hbox", null, {id: this.id});
        for(var buttonData of this.buttonsData) {
            var key = Object.keys(buttonData)[0], data = buttonData[key];
            var btn = this.insertElement("toolbarbutton", box, data);
            btn.tooltipText = key; btn.linkedPopup = this.createPopup(data.data);
            btn.setAttribute("oncommand", "var popup = this.appendChild(this.linkedPopup); popup.openPopup(this);");
        }
        return this.buttons = box;
    },
    createPopup: function(data, notRoot) {
        var popup = this.insertElement("menupopup");
        notRoot || popup.setAttribute("position", "after_start");
        popup.setAttribute("oncommand", "event.stopPropagation(); insertCodeAtCaret(event.originalTarget.value);");
        for(var [key, val] in Iterator(data)) {
            if (typeof val == "string") {
                var value = val.slice(val.indexOf("\n") + 1, val.lastIndexOf("\n"));
                var menuitem = this.insertElement("menuitem", popup, {label: key, value: value});
                menuitem.tooltipText = value;
            } else {
                var menu = this.insertElement("menu", popup, {label: key});
                this.insertElement(this.createPopup(val, true), menu);
            }
        }
        return popup;
    },
    insertElement: function(element, parent, attributes, before = null) {
        var notExist = typeof element != "object";
        if (notExist) element = document.createElement(element);
        if (notExist && attributes) {
            for(var attribute in attributes) {
                attribute == "data" || element.setAttribute(attribute, attributes[attribute]);
            }
        }
        parent && parent.insertBefore(element, before);
        return element;
    },
    deleteAndAddForDoc(add, doc) {
        var box = doc.getElementById(this.id);
        box && box.remove();
        add && this.pageshow({target: doc});
    },
    deleteAndAddForAll(add) {
        for(var br of gBrowser.browsers) {
            var doc = br.contentDocument;
            this.isStylishTab(doc) && this.deleteAndAddForDoc(add, doc);
        }
    },
    init: function() {
        addEventListener("pageshow", this, false, gBrowser);
        this.deleteAndAddForAll(true);
        addDestructor(() => this.deleteAndAddForAll(), this);
    },
    handleEvent: function(e) this[e.type](e),
    pageshow: function(e) {
        if (!this.isStylishTab(e.target)) return;
        var before = e.target.getElementById("wrap-lines");
        var buttons = this.buttons, clone = buttons.cloneNode(true);
        before && this.insertElement(clone, before.parentNode, null, before);
        for(var i = 0, l = clone.childNodes.length; i < l; i++) {
            clone.childNodes[i].linkedPopup = buttons.childNodes[i].linkedPopup;
        }
    }
}).init();

Dumby
Оу, красота! :) Спасибо.

А можно сделать ее единой и для редактора во вкладке и в окне? Иногда так удобнее, иногда так. Боюсь, я сам не осилю...

bunda1, спасибо. А можно сделать очистку папок автоматом, перед закрытием браузера?

а может кто нибудь добавить в кнопку
Proxy
запуск приложения по типа

Выделить код

Код:

startProcess("G:\\Programs\\HandyCache\\HandyCache.exe",[""]);

function startProcess(path, args) {
    var file = Components.classes["@mozilla.org/file/local;1"]
        .createInstance(Components.interfaces.nsILocalFile);
     file.initWithPath(path);
    if(file.exists()) {
       var process = Components.classes["@mozilla.org/process/util;1"]
              .createInstance(Components.interfaces.nsIProcess);
       process.init(file);
        process.run(false, args, args.length);
      } else custombuttons. alertBox ("Файл не найден", path); 
};

а при повтором нажатии(тоесть выключении прокси) убивание процесса программы(как это сделано в "Остановить очистку потребляемой оперативной памяти")

Ну если по простому то в начале кода инициализации после:

Выделить код

Код:

cbu.setPrefs("network.proxy.type", (cbu.getPrefs("network.proxy.type") == 1 ) ? 0 : 1 );

положи:       

Выделить код

Код:

if ( cbu.getPrefs("network.proxy.type") == 1 ) {
             var file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsILocalFile);
             file.initWithPath("C:\\Program Files\\HandyCache\\HandyCache.exe");
             file.launch();
             }
        else
             {
             // Закрыть все процессы 'HandyCache.exe' ................
             var VBScript =
                   'strComputer = "."\
                   \nSet objWMIService = GetObject("winmgmts:" _\
                   \n& "{impersonationLevel=impersonate}!\\\\" & strComputer & "\\root\\cimv2")\
                   \nSet colProcessList = objWMIService.ExecQuery _\
                   \n("Select * from Win32_Process Where Name = \x27HandyCache.exe\x27")\
                   \nFor Each objProcess in colProcessList\
                   \nobjProcess.Terminate()\
                   \nNext';
   
             var file = Services.dirsvc.get('ProfD', Ci.nsIFile);
             file.append("processTerminate.vbs");
             custombuttonsUtils.writeFile(file.path, VBScript);
             file.launch();                          
             }

Прошу поясните кто может: что делает эта кнопка Script Loader
ежели из описания коротенького что там есть(и ежели прально понял):
Script Loader by LouCypher (aka Zoolcar9)
    Load a script and execute it

- то это подгрузчик скриптов, типа GM. Так ли это. И ежели так то проверьте, будьте любезны, у себя работает ли кнопка. У мну ничего не делает и "полупрозрачна", как когда кнопка с ошибкой или неверна.

HaGEN пишет

Прошу поясните кто может: что делает эта кнопка Script Loader
ежели из описания коротенького что там есть(и ежели прально понял):
Script Loader by LouCypher (aka Zoolcar9)
    Load a script and execute it

- то это подгрузчик скриптов, типа GM. Так ли это. И ежели так то проверьте, будьте любезны, у себя работает ли кнопка. У мну ничего не делает и "полупрозрачна", как когда кнопка с ошибкой или неверна.

Кнопка не работает потому что в ней используется makeXML() который не поддерживается уже давно. И этот Script Loader кажется предназначен для запуска текстовых файлов типа .js с кодами которые работают в CB кнопках но не с кодами GM с некоторыми исключениями.

Ага, знач не то что я думал и не буду пытаться.
Благодарю.

Может кто знает, кнопка переключения стилей от Infocatcher Style toggler
не подхватывает картинку из папки chrome.
не так
background-image: url("C:\\Firefox\\Profile\\chrome\\background.jpg");
не так background-image: url("background.jpg");
не хочет. Как в кнопке правильно путь прописать?

villa7
file:///E:/Images/blabla.png

turbot
Точно, смутно помнил про три слеша, да давно с этим сталкивался, надо на лбу записать. Спасибо.

turbot пишет

А можно сделать ее единой и для редактора во вкладке и в окне? Иногда так удобнее, иногда так. Боюсь, я сам не осилю...

Во, может такая подойдёт

скрытый текст
У меня, вроде, не сильно глючит.
Для редактирования предполагается контекстное меню.
Результат редактирования (innerHTML) пишется на вкладку Справка.
Попробуй.

Выделить код

Код:

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%3EUnnamed%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/gif%3Bbase64%2CR0lGODlhEAAQAN0DABop/8f//5zj/////+D//xpP/4rQ/xxk/xo8/0KH/3vA/xpH/1Ka/xpb/3W8/5DZ/6Lp/xow/1lo/yZr/0yU/zN6/zB1/2uz/z+IzDyEx+Hh4TJB/4bM8B9m/4/W/4jO/5be/+j//670/y50/1ed/3G1/6rM/7bF/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAUsASgAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAEAAQAAAGlUCAcEgsCgNIJORhAAiezyPyAFgcDoUIgBMFICeFB2FA1jAOXSTgQQYZIIMLWiBFkBmFBADRUHSFCGMGWVVQdE4CCx5kAwQGegZdTx8IDmNkBBCIQk8GEhURDQyXBZICEiYnBwkICQMhHRgZnAIbAwECDhMCjQVqm4yMASUkv08WDRQKyw4VFEm0dBcJIxZeSQFG2kRBACH5BAkZACgALAAAAAAQABAAAAY5QJRwSCwKBUgkMcBkHpVGoRMFjaKm1ShWYJUGusPm9zq2TqfmMVPUPZfBZDAUHZ2/i0nvnZrkwotBADs%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5BgBrowser.currentURI.spec%20%3D%3D%20%22about%3Acustomizing%22%20%7C%7C%20%28%28%29%20%3D%3E%20%7B%0A%09var%20obsId%20%3D%20%22CB%22%20+%20_id.slice%2820%29%20+%20%22_PasteButtonsForStylish%22%3B%0A%09var%20obs%20%3D%20Application.storage.get%28obsId%2C%20null%29%3B%0A%09if%20%28%21obs%29%20%7B%0A%09%09obs%20%3D%20%7B%0A%09%09%09id%3A%20obsId%2C%0A%09%09%09boxId%3A%20obsId%20+%20%22_Box%22%2C%0A%09%09%09brURL%3A%20location.href%2C%0A%09%09%09topic%3A%20%22document-shown%22%2C%0A%09%09%09init%3A%20function%28%29%20%7B%0A%09%09%09%09this.proceedAll%28true%29%3B%0A%09%09%09%09Services.obs.addObserver%28this%2C%20this.topic%2C%20false%29%3B%0A%09%09%09%7D%2C%0A%09%09%09destroy%3A%20function%28%29%20%7B%0A%09%09%09%09this.proceedAll%28false%29%3B%0A%09%09%09%09try%20%7BServices.obs.removeObserver%28this%2C%20this.topic%29%3B%7D%0A%09%09%09%09catch%28ex%29%20%7BCu.reportError%28ex%29%3B%7D%0A%09%09%09%7D%2C%0A%0A//%09%09%09-----------------------------------%20OBS%20----------------------------------%0A%0A%09%09%09observe%3A%20function%28doc%29%20this.proceedDoc%28doc%2C%20true%29%2C%0A%09%09%09isStylishDoc%3A%20function%28doc%29%20doc.location%0A%09%09%09%09%26%26%20doc.location.href.startsWith%28%22about%3Astylish-edit%22%29%2C%0A%09%09%09isBrowserDoc%3A%20function%28doc%29%20doc.location%0A%09%09%09%09%26%26%20doc.location.href%20%3D%3D%20this.brURL%2C%0A%09%09%09proceedAll%3A%20function%28init%29%20%7B%0A%09%09%09%09var%20en%20%3D%20Services.wm.getEnumerator%28null%29%3B%0A%09%09%09%09while%28en.hasMoreElements%28%29%29%20%7B%0A%09%09%09%09%09var%20doc%20%3D%20en.getNext%28%29.document%3B%0A%09%09%09%09%09if%20%28this.isBrowserDoc%28doc%29%29%20%7B%0A%09%09%09%09%09%09for%28var%20br%20of%20doc.defaultView.gBrowser.browsers%29%20%7B%0A%09%09%09%09%09%09%09this.proceedDoc%28br.contentDocument%2C%20init%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%09var%20sidebarDoc%20%3D%20doc.getElementById%28%22sidebar%22%29.contentDocument%3B%0A%09%09%09%09%09%09this.proceedDoc%28sidebarDoc%2C%20init%29%3B%0A%09%09%09%09%09%09var%20wpb%20%3D%20sidebarDoc.getElementById%28%22web-panels-browser%22%29%3B%0A%09%09%09%09%09%09wpb%20%26%26%20this.proceedDoc%28wpb.contentDocument%2C%20init%29%3B%0A%09%09%09%09%09%7D%20%0A%09%09%09%09%09else%0A%09%09%09%09%09%09this.proceedDoc%28doc%2C%20init%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%2C%0A%09%09%09proceedDoc%3A%20function%28doc%2C%20add%29%20%7B%0A%09%09%09%09if%20%28%21this.isStylishDoc%28doc%29%20%7C%7C%20doc.readyState%20%21%3D%20%22complete%22%29%20return%3B%0A%09%09%09%09var%20box%20%3D%20doc.getElementById%28this.boxId%29%3B%0A%09%09%09%09if%20%28add%20%26%26%20%21box%29%20%7B%0A%09%09%09%09%09var%20before%20%3D%20doc.getElementById%28%22wrap-lines%22%29%3B%0A%09%09%09%09%09this.addBox%28before%29%3B%0A%09%09%09%09%7D%20else%20if%20%28%21add%20%26%26%20box%29%20%7B%0A%09%09%09%09%09box%20%26%26%20box.remove%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%2C%0A%0A//%09%09%09---------------------------------------------%20BOX%20--------------------------------------------%0A%0A%09%09%09get%20box%28%29%20%7B%0A%09%09%09%09delete%20this.box%3B%0A%09%09%09%09return%20this.box%20%3D%20this.createBox%28%29%3B%0A%09%09%09%7D%2C%0A%09%09%09createBox%3A%20function%28%29%20%7B%0A%09%09%09%09var%20box%20%3D%20this.insertElement%28%22hbox%22%2C%20null%2C%20%7B%0A%09%09%09%09%09id%3A%20this.boxId%2C%0A%09%09%09%09%09onclick%3A%20%60%0A%09%09%09%09%09%09if%20%28event.button%20%21%3D%202%29%20return%3B%0A%09%09%09%09%09%09var%20popup%20%3D%20this.linkedPopup%3B%0A%09%09%09%09%09%09if%20%28popup.state%20%21%3D%20%22closed%22%29%20popup.hidePopup%28%29%3B%0A%09%09%09%09%09%09popup.linkedTarget%20%3D%20event.originalTarget%3B%0A%09%09%09%09%09%09popup.openPopupAtScreen%28event.screenX%2C%20event.screenY%29%3B%0A%09%09%09%09%09%60%2C%0A%09%09%09%09%09oncommand%3A%20%60%0A%09%09%09%09%09%09event.stopPropagation%28%29%3B%0A%09%09%09%09%09%09var%20trg%20%3D%20event.originalTarget%3B%0A%09%09%09%09%09%09if%20%28trg.nodeName%20%3D%3D%20%22toolbarbutton%22%29%0A%09%09%09%09%09%09%09trg.firstChild.openPopup%28trg%29%3B%0A%09%09%09%09%09%09/*%0A%09%09%09%09%09%09else%20if%20%28trg.nodeName%20%3D%3D%20%22menuitem%22%29%0A%09%09%09%09%09%09%09trg.hasAttribute%28%22value%22%29%0A%09%09%09%09%09%09%09%26%26%20insertCodeAtCaret%28trg.value%29%3B%0A%09%09%09%09%09%09*/%0A%09%09%09%09%09%09else%20if%20%28trg.nodeName%20%3D%3D%20%22menuitem%22%20%26%26%20trg.hasAttribute%28%22value%22%29%29%20%7B%0A%09%09%09%09%09%09%09insertCodeAtCaret%28trg.value%29%3B%0A%09%09%09%09%09%09%09codeElementWrapper.focus%28%29%3B%0A%09%09%09%09%09%09%7D%0A%09%09%09%09%09%60%0A%09%09%09%09%7D%29%3B%0A%09%09%09%09return%20box%3B%0A%09%09%09%7D%2C%0A%09%09%09get%20boxContent%28%29%20%7B%0A%09%09%09%09delete%20this.boxContent%3B%0A%09%09%09%09return%20this.boxContent%20%3D%20self.Help.trim%28%29%3B%0A%09%09%09%7D%2C%0A%09%09%09addBox%3A%20function%28before%29%20%7B%0A%09%09%09%09var%20box%20%3D%20before.parentNode.insertBefore%28this.box.cloneNode%28false%29%2C%20before%29%3B%0A%09%09%09%09box.innerHTML%20%3D%20this.boxContent%3B%0A%09%09%09%09box.linkedPopup%20%3D%20box.appendChild%28this.popup.cloneNode%28true%29%29%3B%0A%09%09%09%09box.style.cssText%20%3D%20%22max-height%3A%2032px%20%21important%3B%20max-width%3A%20320px%20%21important%3B%22%3B%0A%09%09%09%7D%2C%0A%0A//%09%09%09-------------------------------------------%20CONTEXT%20------------------------------------------%0A%0A%09%09%09popupXUL%3A%20%60%0A%09%09%09%09%3Cmenupopup%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%09%09%09%09%09id%3D%22%24%7BobsId%20+%20%22_Context%22%7D%22%0A%09%09%09%09%09oncommand%3D%22event.stopPropagation%28%29%3B%20var%20obs%20%3D%20Application.storage.get%28%27%24%7BobsId%7D%27%2C%20null%29%3B%20if%20%28obs%29%20obs.cmdDispatcher%28event%29%3B%22%0A%09%09%09%09%09onpopupshowing%3D%22var%20obs%20%3D%20Application.storage.get%28%27%24%7BobsId%7D%27%2C%20null%29%3B%20if%20%28obs%29%20obs.contextPopupshowing%28this%29%3B%22%3E%0A%09%09%09%09%09%3Cmenuitem%20label%3D%22%u0418%u0437%u043C%u0435%u043D%u0438%u0442%u044C%22%20value%3D%22openEditor%22/%3E%0A%09%09%09%09%09%3Cmenuseparator/%3E%0A%09%09%09%09%09%3Cmenuitem%20label%3D%22%u0412%u044B%u0448%u0435%22%20value%3D%22moveUp%22/%3E%0A%09%09%09%09%09%3Cmenuitem%20label%3D%22%u041D%u0438%u0436%u0435%22%20value%3D%22moveDown%22/%3E%0A%09%09%09%09%09%3Cmenuseparator/%3E%0A%09%09%09%09%09%3Cmenuitem%20label%3D%22%u041A%u043E%u043F%u0438%u0440%u043E%u0432%u0430%u0442%u044C%22%20value%3D%22copyItem%22%20closemenu%3D%22none%22/%3E%0A%09%09%09%09%09%3Cmenuitem%20label%3D%22%u0412%u0441%u0442%u0430%u0432%u0438%u0442%u044C%22%20value%3D%22pasteItem%22/%3E%0A%09%09%09%09%09%3Cmenuitem%20label%3D%22%u0423%u0434%u0430%u043B%u0438%u0442%u044C%22%20value%3D%22deleteItem%22/%3E%0A%09%09%09%09%09%3Cmenuseparator/%3E%0A%09%09%09%09%09%3Cmenuitem%20label%3D%22%u041D%u043E%u0432%u044B%u0439%20menuitem%22%20value%3D%22newMenuitem%22/%3E%0A%09%09%09%09%09%3Cmenuitem%20label%3D%22%u041D%u043E%u0432oe%20menu%22%20value%3D%22newMenu%22/%3E%0A%09%09%09%09%09%3Cmenuitem%20label%3D%22%u041D%u043E%u0432%u044B%u0439%20toolbarbutton%22%20value%3D%22newButton%22/%3E%0A%09%09%09%09%09%3Cmenuitem%20label%3D%22%u041D%u043E%u0432%u044B%u0439%20menuseparator%22%20value%3D%22newSeparator%22/%3E%0A%09%09%09%09%09%3Cmenuseparator/%3E%0A%09%09%09%09%09%3Cmenuitem%20label%3D%22%u041A%u0430%u0440%u0442%u0438%u043D%u043A%u0430%20base64%22%20value%3D%22imgBase64%22/%3E%0A%09%09%09%09%3C/menupopup%3E%0A%09%09%09%60%2C%0A%09%09%09get%20popup%28%29%20%7B%0A%09%09%09%09delete%20this.popup%3B%0A%09%09%09%09return%20this.popup%20%3D%20this.createPopup%28%29%3B%0A%09%09%09%7D%2C%0A%09%09%09createPopup%3A%20function%28%29%20%7B%0A%09%09%09%09var%20xul%20%3D%20this.popupXUL.trim%28%29.replace%28/%3E%5Cs+%3C/g%2C%20%22%3E%3C%22%29%3B%0A%09%09%09%09var%20popup%20%3D%20new%20DOMParser%28%29.parseFromString%28xul%2C%20%22application/xml%22%29.documentElement%3B%0A%09%09%09%09return%20popup%3B%0A%09%09%09%7D%2C%0A%09%09%09cmdDispatcher%3A%20function%28e%29%20%7B%0A%09%09%09%09var%20trg%20%3D%20e.originalTarget%2C%20popup%20%3D%20trg.parentNode%2C%20cmd%20%3D%20trg.value%3B%0A%09%09%09%09if%20%28%21cmd%29%20return%3B%0A%09%09%09%09var%20popupNode%20%3D%20popup.linkedTarget%3B%0A%09%09%09%09cmd.startsWith%28%22new%22%29%0A%09%09%09%09%09%3F%20this.newItem%28popupNode%2C%20cmd.slice%283%29%29%0A%09%09%09%09%09%3A%20this%5Bcmd%5D%28popupNode%2C%20popup%29%3B%0A%09%09%09%09%22copyItem%20openEditor%20imgBase64%22.contains%28cmd%29%20%7C%7C%20this.save%28popupNode%29%3B%0A%09%09%09%7D%2C%0A%09%09%09get%20emptySeparator%28%29%20%7B%0A%09%09%09%09delete%20this.emptySeparator%3B%0A%09%09%09%09return%20this.emptySeparator%20%3D%20this.insertElement%28%22menuseparator%22%29%3B%0A%09%09%09%7D%2C%0A%09%09%09get%20emptyMenuitem%28%29%20%7B%0A%09%09%09%09delete%20this.emptyMenuitem%3B%0A%09%09%09%09return%20this.emptyMenuitem%20%3D%20this.insertElement%28%22menuitem%22%2C%20null%2C%20%7Blabel%3A%20%22menuitem%22%2C%20value%3A%20%22%22%7D%29%3B%0A%09%09%09%7D%2C%0A%09%09%09get%20emptyMenupopup%28%29%20%7B%0A%09%09%09%09delete%20this.emptyMenupopup%3B%0A%09%09%09%09var%20popup%20%3D%20this.insertElement%28%22menupopup%22%29%3B%0A%09%09%09%09popup.appendChild%28this.emptyMenuitem.cloneNode%28false%29%29%3B%0A%09%09%09%09return%20this.emptyMenupopup%20%3D%20popup%3B%0A%09%09%09%7D%2C%0A%09%09%09get%20emptyMenu%28%29%20%7B%0A%09%09%09%09delete%20this.emptyMenu%3B%0A%09%09%09%09var%20menu%20%3D%20this.insertElement%28%22menu%22%2C%20null%2C%20%7Blabel%3A%20%22menu%22%7D%29%3B%0A%09%09%09%09menu.appendChild%28this.emptyMenupopup.cloneNode%28true%29%29%3B%0A%09%09%09%09return%20this.emptyMenu%20%3D%20menu%3B%0A%09%09%09%7D%2C%0A%09%09%09get%20emptyButton%28%29%20%7B%0A%09%09%09%09delete%20this.emptyButton%3B%0A%09%09%09%09var%20btn%20%3D%20this.insertElement%28%22toolbarbutton%22%2C%20null%2C%20%7B%0A%09%09%09%09%09image%3A%20%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA////////////////////////////////////////////////////////////////////////////AAAA/wAAAP//////AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD//////wAAAP8AAAD//////wAAAP//////////////////////////////////////////////////////AAAA//////8AAAD/AAAA//////8AAAD//////wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD//////wAAAP//////AAAA/wAAAP//////AAAA//////8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAD//////wAAAP8AAAD//////wAAAP//////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AAAA//////8AAAD/AAAA//////8AAAD//////wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wAAAP//////AAAA/wAAAP//////AAAA//////8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAD//////wAAAP8AAAD//////wAAAP//////AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////AAAA//////8AAAD/AAAA//////8AAAD//////wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////wAAAP//////AAAA/wAAAP//////AAAA//////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA//////8AAAD//////wAAAP8AAAD//////wAAAP//////////////////////////////////////////////////////AAAA//////8AAAD/AAAA//////8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP//////AAAA/wAAAP///////////////////////////////////////////////////////////////////////////wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AACsQQAArEEAAKxBAACsQQAArEEH4KxBB+CsQQfgrEEH4KxBB+CsQQfgrEEAAKxBAACsQQAArEEAAKxBAACsQQ%3D%3D%22%0A%09%09%09%09%7D%29%3B%0A%09%09%09%09btn.appendChild%28this.emptyMenupopup.cloneNode%28true%29%29%3B%0A%09%09%09%09return%20this.emptyButton%20%3D%20btn%3B%0A%09%09%09%7D%2C%0A%09%09%09newItem%3A%20function%28node%2C%20name%29%20%7B%0A%09%09%09%09var%20newItem%20%3D%20this%5B%22empty%22%20+%20name%5D.cloneNode%28true%29%3B%0A%09%09%09%09node.parentNode.insertBefore%28newItem%2C%20node.nextSibling%29%3B%0A%09%09%09%09if%20%28name%20%3D%3D%20%22Button%22%29%20newItem.firstChild.setAttribute%28%22position%22%2C%20%22after_start%22%29%3B%0A%09%09%09%7D%2C%0A%09%09%09deleteItem%3A%20function%28node%29%20%7B%0A%09%09%09%09var%20win%20%3D%20this.top%28node%29%3B%0A%09%09%09%09if%20%28%21win.confirm%28%22%u0423%u0434%u0430%u043B%u0438%u0442%u044C%20%3F%22%29%29%20return%3B%0A%09%09%09%09node.remove%28%29%3B%0A%09%09%09%7D%2C%0A%09%09%09moveUp%3A%20function%28node%29%20%7B%0A%09%09%09%09node.parentNode.insertBefore%28node%2C%20node.previousSibling%29%3B%0A%09%09%09%7D%2C%0A%09%09%09moveDown%3A%20function%28node%29%20%7B%0A%09%09%09%09node.parentNode.insertBefore%28node%2C%20node.nextSibling.nextSibling%29%3B%0A%09%09%09%7D%2C%0A%09%09%09copyItem%3A%20function%28node%2C%20popup%29%20%7B%0A%09%09%09%09this.transactionNode%20%3D%20node.cloneNode%28true%29%3B%0A%09%09%09%09popup.querySelector%28%27menuitem%5Bvalue%3D%22pasteItem%22%5D%27%29.disabled%20%3D%20false%3B%0A%09%09%09%7D%2C%0A%09%09%09pasteItem%3A%20function%28node%29%20%7B%0A%09%09%09%09node.parentNode.insertBefore%28this.transactionNode%2C%20node%29%3B%0A%09%09%09%7D%2C%0A%09%09%09imgBase64%3A%20function%28node%29%20%7B%0A%09%09%09%09var%20obs%20%3D%20this%3B%0A%09%09%09%09var%20picker%20%3D%20makeFilePicker%28%29%3B%0A%09%09%09%09picker.appendFilters%28picker.filterImages%29%3B%0A%09%09%09%09picker.init%28this.top%28node%29%2C%20%22%u0418%u0437%u043E%u0431%u0440%u0430%u0436%u0435%u043D%u0438%u0435%22%2C%20picker.modeOpen%29%3B%0A%09%09%09%09picker.open%28%7Bdone%3A%20function%28result%29%20%7B%0A%09%09%09%09%09if%20%28result%20%21%3D%20picker.returnOK%29%20return%3B%0A%09%09%09%09%09var%20reader%20%3D%20new%20FileReader%28%29%3B%0A%09%09%09%09%09reader.onload%20%3D%20function%28%29%20%7B%0A%09%09%09%09%09%09if%20%28%21reader.result%29%20return%3B%0A%09%09%09%09%09%09var%20name%20%3D%20node.nodeName%3B%0A%09%09%09%09%09%09%22menuitem%22.contains%28name%29%20%26%26%20node.classList.add%28name%20+%20%22-iconic%22%29%3B%0A%09%09%09%09%09%09node.setAttribute%28%22image%22%2C%20reader.result%29%3B%0A%09%09%09%09%09%09obs.save%28node%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%09reader.readAsDataURL%28new%20File%28picker.file%29%29%3B%0A%09%09%09%09%7D%7D%29%3B%0A%09%09%09%7D%2C%0A%09%09%09disablers%3A%20%7B%0A%09%09%09%09moveUp%3A%20function%28node%29%20%21node.previousSibling%2C%0A%09%09%09%09moveDown%3A%20function%28node%29%20%21node.nextSibling%20%7C%7C%20node.nextSibling.nodeName%20%3D%3D%20%22menupopup%22%2C%0A%09%09%09%09deleteItem%3A%20function%28node%29%20%7B%0A%09%09%09%09%09var%20count%20%3D%20node.parentNode.childElementCount%3B%0A%09%09%09%09%09return%20count%20%3D%3D%201%20%7C%7C%20%28node.nodeName%20%3D%3D%20%22toolbarbutton%22%20%26%26%20count%20%3D%3D%202%29%3B%0A%09%09%09%09%7D%2C%0A%09%09%09%09top%3A%20function%28node%29%20%22toolbarbutton%20hbox%22.contains%28node.nodeName%29%2C%0A%09%09%09%09newMenuitem%3A%20function%28node%29%20this.top%28node%29%2C%0A%09%09%09%09newMenu%3A%20function%28node%29%20this.top%28node%29%2C%0A%09%09%09%09newSeparator%3A%20function%28node%29%20this.top%28node%29%2C%0A%09%09%09%09newButton%3A%20function%28node%29%20%21this.top%28node%29%2C%0A%09%09%09%09copyItem%3A%20function%28node%29%20node.nodeName%20%3D%3D%20%22hbox%22%2C%0A%09%09%09%09pasteItem%3A%20function%28%29%20%21%28%22transactionNode%22%20in%20this.obs%29%2C%0A%09%09%09%09imgBase64%3A%20function%28node%29%20%21%22toolbarbutton%20menu%20menuitem%22.contains%28node.nodeName%29%0A%09%09%09%7D%2C%0A%09%09%09contextPopupshowing%3A%20function%28popup%29%20%7B%0A%09%09%09%09this.disablers.obs%20%3D%20this%3B%0A%09%09%09%09var%20node%20%3D%20popup.linkedTarget%3B%0A%09%09%09%09for%28var%20key%20in%20this.disablers%29%20%7B%0A%09%09%09%09%09var%20menuitem%20%3D%20popup.querySelector%28%60menuitem%5Bvalue%3D%22%24%7Bkey%7D%22%5D%60%29%3B%0A%09%09%09%09%09if%20%28menuitem%29%20menuitem.disabled%20%3D%20this.disablers%5Bkey%5D%28node%29%20%7C%7C%20node.nodeName%20%3D%3D%20%22menupopup%22%3B%0A%09%09%09%09%7D%0A%09%09%09%09popup.querySelector%28%27menuitem%5Bvalue%3D%22openEditor%22%5D%27%29.disabled%20%3D%20node.nodeName%20%3D%3D%20%22hbox%22%3B%0A%09%09%09%7D%2C%0A%0A//%09%09%09-----------------------------------------------%20EDITOR%20----------------------------------------------%0A%0A%09%09%09editorXUL%3A%20%60%0A%09%09%09%09%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%09%09%09%09%3C%3Fxml-stylesheet%20href%3D%22chrome%3A//global/skin/%22%3F%3E%0A%09%09%09%09%3C%3Fxml-stylesheet%20href%3D%22chrome%3A//custombuttons/content/codeeditor.css%22%20type%3D%22text/css%22%3F%3E%0A%09%09%09%09%3Cdialog%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%0A%09%09%09%09%09title%3D%22%u0418%u0437%u043C%u0435%u043D%u0438%u0442%u044C%22%0A%09%09%09%09%09onload%3D%22obs%20%3D%20Application.storage.get%28%27%24%7BobsId%7D%27%2C%20null%29%3B%20obs.initEditor%28window%29%3B%22%0A%09%09%09%09%09ondialogaccept%3D%22obs.setAttributes%28window%29%3B%22%0A%09%09%09%09%09buttons%3D%22extra2%2Caccept%2Ccancel%22%0A%09%09%09%09%09buttonlabelextra2%3D%22%u0423%u0434%u0430%u043B%u0438%u0442%u044C%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%22%0A%09%09%09%09%09ondialogextra2%3D%22obs.deleteAttribute%28window%29%3B%22%3E%0A%09%09%09%09%09%3Chbox%20align%3D%22center%22%3E%0A%09%09%09%09%09%09%3Clabel%20value%3D%22%u041D%u043E%u0432%u044B%u0439%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%22/%3E%0A%09%09%09%09%09%09%3Ctextbox%20flex%3D%221%22%20multiline%3D%22false%22%20onkeydown%3D%22obs.onTexboxKeydown%28event%29%3B%22/%3E%0A%09%09%09%09%09%09%3Cbutton%20label%3D%22%u0414%u043E%u0431%u0430%u0432%u0438%u0442%u044C%22%20oncommand%3D%22obs.newAttribute%28window%2C%20textbox.value%29%3B%22/%3E%0A%09%09%09%09%09%3C/hbox%3E%0A%09%09%09%09%09%3Ctabbox%20flex%3D%221%22%3E%0A%09%09%09%09%09%09%3Ctabs/%3E%0A%09%09%09%09%09%09%3Ctabpanels%20flex%3D%221%22/%3E%0A%09%09%09%09%09%3C/tabbox%3E%0A%09%09%09%09%3C/dialog%3E%0A%09%09%09%60%2C%0A%09%09%09get%20editorURL%28%29%20%7B%0A%09%09%09%09delete%20this.editorURL%3B%0A%09%09%09%09var%20xul%20%3D%20this.editorXUL.trim%28%29%3B%0A%09%09%09%09return%20this.editorURL%20%3D%20%22data%3Aapplication/vnd.mozilla.xul+xml%2C%22%20+%20encodeURIComponent%28xul%29%3B%0A%09%09%09%7D%2C%0A%09%09%09openEditor%3A%20function%28node%29%20%7B%0A%09%09%09%09this.node%20%3D%20node%3B%20this.elm%20%3D%20this.insertElement%28%22box%22%29%3B%0A%09%09%09%09Services.ww.openWindow%28this.top%28node%29%2C%20this.editorURL%2C%20%22%22%2C%0A%09%09%09%09%09%22chrome%2Cmodal%2Cresizable%2Ccenterscreen%2Cwidth%3D700%2Cheight%3D500%22%0A%09%09%09%09%2C%20null%29%3B%0A%09%09%09%7D%2C%0A%09%09%09initEditor%3A%20function%28win%29%20%7B%0A%09%09%09%09for%28var%20str%20of%20%5B%22tabs%22%2C%20%22tabpanels%22%2C%20%22textbox%22%5D%29%20%7B%0A%09%09%09%09%09win%5Bstr%5D%20%3D%20win.document.querySelector%28str%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09for%28var%20%7Bname%2C%20value%7D%20of%20this.node.attributes%29%20%7B%0A%09%09%09%09%09var%20isVal%20%3D%20name%20%3D%3D%20%22value%22%3B%0A%09%09%09%09%09var%20tab%20%3D%20this.addTab%28win%2C%20name%2C%20value%2C%20isVal%29%3B%0A%09%09%09%09%09if%20%28isVal%29%20tab.style.cssText%20%3D%20%22font-weight%3A%20bold%3B%20color%3A%20navy%3B%22%3B%0A%09%09%09%09%7D%0A%09%09%09%09if%20%28win.tabs.selectedIndex%20%3D%3D%20-1%29%20win.tabs.selectedIndex%20%3D%200%3B%0A%09%09%09%7D%2C%0A%09%09%09addTab%3A%20function%28win%2C%20name%2C%20value%2C%20sel%29%20%7B%0A%09%09%09%09var%20tab%20%3D%20this.insertElement%28%22tab%22%2C%20win.tabs%2C%20%7Blabel%3A%20name%7D%29%3B%0A%09%09%09%09tab.linkedCbeditor%20%3D%20this.insertElement%28%22cbeditor%22%2C%20win.tabpanels%2C%20%7B%0A%09%09%09%09%09class%3A%20%22custombuttons-editor-codeBox%22%2C%0A%09%09%09%09%09multiline%3A%20%22true%22%2C%0A%09%09%09%09%09flex%3A%20%221%22%2C%0A%09%09%09%09%09value%3A%20value%0A%09%09%09%09%7D%29%3B%0A%09%09%09%09if%20%28sel%29%20%7B%0A%09%09%09%09%09win.tabs.selectedItem%20%3D%20tab%3B%0A%09%09%09%09%09tab.linkedCbeditor.focus%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09return%20tab%3B%0A%09%09%09%7D%2C%0A%09%09%09newAttribute%3A%20function%28win%2C%20name%29%20%7B%0A%09%09%09%09name%20%26%26%20this.addTab%28win%2C%20name%2C%20%22%22%2C%20true%29%3B%0A%09%09%09%09win.textbox.value%20%3D%20%22%22%3B%0A%09%09%09%7D%2C%0A%09%09%09onTexboxKeydown%3A%20function%28e%29%20%7B%0A%09%09%09%09if%20%28e.keyCode%20%3D%3D%20e.DOM_VK_RETURN%29%20%7B%0A%09%09%09%09%09e.preventDefault%28%29%3B%0A%09%09%09%09%09this.newAttribute%28e.target.ownerGlobal%2C%20e.target.value%29%3B%0A%09%09%09%09%7D%20else%20try%20%7B%0A%09%09%09%09%09var%20attr%20%3D%20e.target.value%20+%20e.key%3B%0A%09%09%09%09%09this.elm.setAttribute%28attr%2C%20true%29%3B%0A%09%09%09%09%09this.elm.removeAttribute%28attr%29%3B%0A%09%09%09%09%7D%20catch%28ex%29%20%7B%0A%09%09%09%09%09e.preventDefault%28%29%3B%0A%09%09%09%09%7D%0A%09%09%09%7D%2C%0A%09%09%09setAttributes%3A%20function%28win%29%20%7B%0A%09%09%09%09for%28var%20tab%20of%20win.tabs.childNodes%29%20%7B%0A%09%09%09%09%09var%20val%20%3D%20tab.linkedCbeditor.value%3B%0A%09%09%09%09%09this.node.setAttribute%28tab.label%2C%20val%29%3B%0A%09%09%09%09%7D%0A%09%09%09%09this.save%28%29%3B%0A%09%09%09%7D%2C%0A%09%09%09deleteAttribute%3A%20function%28win%29%20%7B%0A%09%09%09%09var%20tab%20%3D%20win.tabs.selectedItem%3B%0A%09%09%09%09var%20attr%20%3D%20tab.label%3B%0A%09%09%09%09if%20%28%21win.confirm%28%22%u0423%u0434%u0430%u043B%u0438%u0442%u044C%20%u0430%u0442%u0440%u0438%u0431%u0443%u0442%20%22%20+%20attr%20+%20%22%20%3F%22%29%29%20return%3B%0A%09%09%09%09this.node.removeAttribute%28tab.label%29%3B%0A%09%09%09%09tab.linkedCbeditor.remove%28%29%3B%20tab.remove%28%29%3B%0A%09%09%09%09win.tabs.selectedIndex%20%3D%200%3B%0A%09%09%09%7D%2C%0A%09%09%09save%3A%20function%28node%20%3D%20this.node%29%20%7B%0A%09%09%09%09var%20box%20%3D%20node.ownerDocument.getElementById%28this.boxId%29%3B%0A%09%09%09%09if%20%28%21box%29%20return%3B%0A%09%09%09%09box.removeChild%28box.linkedPopup%29%3B%0A%09%09%09%09var%20xul%20%3D%20box.innerHTML.replace%28/%5Ct/g%2C%20%22%26%23x9%3B%22%29.replace%28/%5Cn/g%2C%20%22%26%23xA%3B%22%29.replace%28/%5Cr/g%2C%20%22%26%23xD%3B%22%29%3B%0A%09%09%09%09var%20link%20%3D%20custombuttons.makeButtonLink%28%22edit%22%2C%20_id%29%3B%0A%09%09%09%09var%20param%20%3D%20custombuttons.cbService.getButtonParameters%28link%29%3B%0A%09%09%09%09param%20%3D%20param.wrappedJSObject%20%7C%7C%20param%3B%0A%09%09%09%09param.help%20%3D%20xul%3B%0A%09%09%09%09custombuttons.cbService.installButton%28param%29%3B%09%0A%09%09%09%7D%2C%0A%0A//%09%09%09-----------------------------------------------%20MISC%20------------------------------------------%0A%0A%09%09%09insertElement%3A%20function%28element%2C%20parent%2C%20attributes%2C%20before%20%3D%20null%29%20%7B%0A%09%09%09%09var%20notExist%20%3D%20typeof%20element%20%21%3D%20%22object%22%3B%0A%09%09%09%09if%20%28notExist%29%20element%20%3D%20document.createElement%28element%29%3B%0A%09%09%09%09if%20%28notExist%20%26%26%20attributes%29%20%7B%0A%09%09%09%09%09for%28var%20attribute%20in%20attributes%29%20%7B%0A%09%09%09%09%09%09attribute%20%3D%3D%20%22data%22%20%7C%7C%20element.setAttribute%28attribute%2C%20attributes%5Battribute%5D%29%3B%0A%09%09%09%09%09%7D%0A%09%09%09%09%7D%0A%09%09%09%09parent%20%26%26%20parent.insertBefore%28element%2C%20before%29%3B%0A%09%09%09%09return%20element%3B%0A%09%09%09%7D%2C%0A%09%09%09top%3A%20function%28node%29%20%7B%0A%09%09%09%09var%20win%20%3D%20node.ownerGlobal%3B%0A%09%09%09%09if%20%28%21%28win%20instanceof%20ChromeWindow%29%29%0A%09%09%09%09%09win%20%3D%20Services.wm.getMostRecentWindow%28%22navigator%3Abrowser%22%29%3B%0A%09%09%09%09return%20win%3B%0A%09%09%09%7D%0A%09%09%7D%3B%0A%09%09Application.storage.set%28obsId%2C%20obs%29%3B%0A%09%09obs.init%28%29%3B%0A%09%7D%0A%09function%20destructor%28reason%29%20%7B%0A%09%09if%20%28%21%22update%20delete%22.contains%28reason%29%29%20return%3B%0A%09%09var%20obs%20%3D%20Application.storage.get%28obsId%2C%20null%29%3B%0A%09%09if%20%28obs%29%20%7B%0A%09%09%09obs.destroy%28%29%3B%0A%09%09%09Application.storage.set%28obsId%2C%20null%29%3B%0A%09%09%7D%0A%09%7D%0A%09addDestructor%28reason%20%3D%3E%20%7B%0A%09%09destructor%28reason%29%3B%0A%09%09setTimeout%28function%28%29%20%7B%0A%09%09%09custombuttons.palette.querySelector%28%27toolbarbutton%5Bid%3D%22%27%20+%20_id%20+%20%27%22%5D%27%29%20%26%26%20destructor%28%22delete%22%29%3B%0A%09%09%7D%2C%20500%29%3B%0A%09%7D%29%3B%0A%7D%29%28%29%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%3Ctoolbarbutton%20xmlns%3D%22http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%22%20image%3D%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka///jnP//45z//+Oc//8pGv//tG7//4ZA//90Lv//dTD//yka////x////8f////H////x////8f//yka//8pGv//45z//+Oc//91MP//Vxr//5RM///Bev//wXr//8F6//+8df//ejP//5JK////x////8f////H//8pGv//KRr//+Oc///jnP//KRr////////////////////////////////////H//+0bv//nVf////H////x///KRr//yka///jnP//45z//0Ey/////////8b//+Oc//+1cf//ayb//+Oc/////////+X//1Ma////x////8f//yka//8pGv//45z//+Oc//9oWf//zKr//8W2//9eGv//h0L//zwa//+HQv/////////o//9mH//MiD//x4Q8//8pGv//KRr//+Oc///jnP//0Ir//2hZ//96M///NBr//14a//+bVP///+D/////////////Uxr//+Oc///jnP//KRr//yka///jnP//45z//86I//88Gv//vHX////g////////////////////4P//6KL//yka///jnP//45z//yka//8pGv//45z//+Oc//9EGv//1o/////////////////////g///TjP//h0L//yka///Vj///45z//+Oc//8pGv//KRr//yka//8pGv//PBr////l////////0Ir//1Ma//8tGv//KRr//0Aa///jnP//45z//+Oc///jnP//KRr//yka////x////8f//zwa/////f///////5pS//9PGv//h0L//yka//88Gv//Wxr//8B7///jnP//45z//yka//8pGv///8f////H//8pGv//3pb/////////////3pb//9CK///qo////////7Nr//9kHP//45z//+Oc//8pGv//KRr////H////x///ayb//0ca///elv///+D/////////////////4eHh//+aUv//ZBz//+Oc///jnP//KRr//yka////x////8f////H//9kHP//KRr//0ca//9mH///ZBz//08a//8wGv//KRr/8MyG///jnP//45z//yka//8pGv///8f////H////x////8f////H///pov//2ZD//9CK//8pGv//45z//+Oc///jnP//45z//+Oc//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr//yka//8pGv//KRr/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ%3D%3D%22%20tooltiptext%3D%22Button%26%23xA%3BTooltip%26%23xA%3BText%22%3E%3Cmenupopup%20position%3D%22after_start%22%3E%3Cmenuitem%20label%3D%22%21Close%20menu%22%20value%3D%22%26%23xA%3B***%26%23xA%3B%26%23xA%3Bclosemenu%3D%26quot%3Bnone%26quot%3B%26%23xA%3B%26%23xA%3B***%26%23xA%3B%22%20closemenu%3D%22none%22/%3E%3Cmenuseparator/%3E%3Cmenuitem%20label%3D%22Styled%20menuitem%22%20value%3D%22bla%26%23xA%3B%26%23x9%3Bbla%26%23xA%3Bbla%22%20style%3D%22font-style%3A%20italic%3B%26%23xA%3B%26%23xA%3Bcolor%3A%20blue%3B%26%23xA%3Bfont-weight%3A%20bold%3B%26%23xA%3B%26%23xA%3B-moz-appearance%3A%20none%3B%26%23xA%3Bbackground-color%3A%20lightyellow%3B%26%23xA%3Bborder%3A%202px%20solid%20yellow%3B%22/%3E%3Cmenu%20label%3D%22Menu%20iconic%22%20class%3D%22menu-iconic%22%20image%3D%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADMZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm////////////////////////////////////////////////////////////////////////////zGZm/8xmZv///////////////////////////////////////////////////////////////////////////8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm////////////////////////////////////////////////////////////////////////////zGZm/8xmZv///////////////////////////////////////////////////////////////////////////8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm////////////////////////////////////////////////////////////////////////////zGZm/8xmZv///////////////////////////////////////////////////////////////////////////8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm////////////////////////////////////////////////////////////////////////////zGZm/8xmZv///////////////////////////////////////////////////////////////////////////8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm////////////////////////////////////////////////////////////////////////////zGZm/8xmZv///////////////////////////////////////////////////////////////////////////8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/zGZm/8xmZv/MZmb/AACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQ%3D%3D%22%3E%3Cmenupopup%3E%3Cmenuitem%20label%3D%22menuitem%22%20value%3D%22%22/%3E%3C/menupopup%3E%3C/menu%3E%3Cmenuitem%20label%3D%22Menuitem%20iconic%22%20value%3D%22123%26%23xA%3B%26%23xA%3B4567%26%23xA%3B890...%26%23xA%3B%22%20class%3D%22menuitem-iconic%22%20image%3D%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAMwAAADMAAAAzAAAAGDBrppU5gMj/OH7H/zh+x/84fsf/OX7H/zl+x/85fsf/OX7H/zl+x/85fsf/OX7H/zl+x/84fsf/OYDI/zBrppU5gMj/Xdb//1TO//9Tzf//U83//1XO//9Vzv//VM3//1TN//9Vzv//Vc7//1TN//9Uzf//VM7//13W//85gMj/OH7H/1vP//9Dwv//TsX//z/A//9Dwf//RsL//0LB//9AwP//Q8H//0bC//9Cwf//QMD//0PC//9bz///OH7H/zZ9x/9XzP//y+7/////////////zO7//zW8/////////////8vt//81vP/////////////L7v//V8z//zZ9x/81fcf/V8v///////8ntv//K7f///////8zuv//L7j//yO0////////Lrj//y64//8jtP///////1fL//81fcf/NH3H/1nM////////KLX//zO5//8xuP//MLj//ye0///E6////////yi1//8mtP//xOr///////9czf//NX3H/zR9x/9dzP///////yGx//8stf//KbT//yOy////////wer//x+x//8hsf///////8Hq//8esf//Z8///zZ+x/80fcf/Y83///////8Sq///F63///////8WrP///////xCq//8brv//G67///////8Pqf//Ga7//23R//82fsf/NX3H/27R//+86f/////////////C6v//FKz//8Dp/////////////xWs///A6f////////////9w0f//NX3H/zZ+x/971f//Dqr//w2p//8Oqf//Eqr//xas//8Sqv//D6n//xGq//8Wq///Eqr//w6p//8Nqf//etT//zZ+x/83gMj/hNz//4LY//+C1///g9f//4TY//+E2P//hNj//4PX//+D2P//hNj//4TY//+C1///gtj//4Tc//83gMj/OYPKjTeAyP82fsf/Nn7H/zZ+x/82fsf/Nn7H/zZ+x/82fsf/Nn7H/zZ+x/82fsf/Nn7H/zZ+x/83gMj/OYPKjQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEEAAKxBAACsQQAArEH//6xB//+sQQ%3D%3D%22/%3E%3Cmenuseparator/%3E%3Cmenuitem%20label%3D%22JS%22%20oncommand%3D%27alert%28%22JS%22%29%3B%27%20tooltiptext%3D%22%u041F%u0440%u043E%u0441%u0442%u043E%20demo%22/%3E%3Cmenuitem%20label%3D%22%u0414%u043B%u044F%20%u0441%u043B%u0435%u0434%u0443%u044E%u0449%u0435%u0433%u043E%20%u043F%u0443%u043D%u043A%u0442%u0430%22%20value%3D%22@namespace%20url%28http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%29%3B%26%23xA%3B%26%23xA%3B%23blablabla%20%7B%26%23xA%3B%26%23x9%3Bcolor%3A%20black%3B%26%23xA%3B%26%23x9%3Bdisplay%3A%20-moz-box%20%21important%3B%26%23xA%3B%26%23x9%3Bwidth%3A100px%3B%26%23xA%3B%26%23x9%3Bheight%3A30px%21important%3B%26%23xA%3B%7D%22%20tooltiptext%3D%22@namespace%20url%28http%3A//www.mozilla.org/keymaster/gatekeeper/there.is.only.xul%29%3B%26%23xA%3B%26%23xA%3B%23blablabla%20%7B%26%23xA%3B%26%23x9%3Bcolor%3A%20black%3B%26%23xA%3B%26%23x9%3Bdisplay%3A%20-moz-box%20%21important%3B%26%23xA%3B%26%23x9%3Bwidth%3A100px%3B%26%23xA%3B%26%23x9%3Bheight%3A30px%21important%3B%26%23xA%3B%7D%22/%3E%3Cmenuitem%20label%3D%22JS%20%20%20%20%20%21important%3B%22%20oncommand%3D%22event.stopPropagation%28%29%3B%26%23xA%3Bthis.text%20%3D%20this.result%3B%26%23xA%3B%22%20onmouseenter%3D%27this.text%20%3D%20codeElementWrapper.value%3B%26%23xA%3Bthis.result%20%3D%20this.text%26%23xA%3B%26%23x9%3B.replace%28/%20%3F%21important%3B/g%2C%20%22%3B%22%29%26%23xA%3B%26%23x9%3B.replace%28/%3B/g%2C%20%22%20%21important%3B%22%29%26%23xA%3B%26%23x9%3B.replace%28/%28@namespace%5B%5E%3B%5D+%29%20%21important%3B/%2C%20%22%241%3B%22%29%3B%26%23xA%3B%26%23xA%3BsourceEditor.setText%28this.result%29%3B%27%20onmouseleave%3D%22sourceEditor.setText%28this.text%29%3B%26%23xA%3Bdelete%20this.text%3B%26%23xA%3Bdelete%20this.result%3B%22%20tooltiptext%3D%22%u041D%u0435%20%u0434%u0435%u043B%u0430%u0439%20%u0442%u0430%u043A%22%20class%3D%22menuitem-iconic%22%20image%3D%22data%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABchMtebZPU+HWZ1+5tk9PJZ47Rk2uQ0r9xltTkd5vY83me2v96ndr5bZLT+WaN0PBiic6eXITLNgAAAAAAAAAAbZPUzqXH8/+rzPj/j7Dj/5O06P+hxPH/rc73/7HS+/+bve7/cpfV/42x5P+myPD/oMLt/26U1OoAAAAAAAAAAIKo4PO62/v/utr7/7DR+f+01fz/u9z8/77e/f+11vv/kLPn/26U1P9xldX/dZnW/3SY1f9njtDhXITLBwAAAACNseT/vt79/77e/f+93f3/vt79/77e/f+93f3/nb/v/3KX1f+Ut+f/udr6/77e/f+83fz/m73r/1yEy2sAAAAAjrHk/77e/f++3v3/vt79/77e/f++3v3/uNn8/5q87f9zl9f/cJTU/3WZ1v91mdb/dZnW/3CU1P9dhcxpAAAAAIqu4vq83Pz/vt79/77e/f++3v3/vt79/7TV/P+Dp9//dJnX/7HS9v++3v3/vt79/77e/f+y0/f/dZvY6gAAAAB4ndnbsdH2/6fI8f+pyvX/t9n6/77e/f+21/v/jrHl/2mQ0v9vlNT/dZnW/3WZ1v91mdb/c5fV/2SLzr0AAAAAXITLbHab2fd1mtridJnXq5Cz6P+21vn/vNz8/6/R+v+Dp9//ia3j/7jY+f++3v3/vt79/7XV+P96oNvqAAAAAAAAAAAAAAAAAAAAAAAAAABehsx4lLjr/7ra+v+42Pz/iq3j/2mP0f+DqeD/jrHk/46x5P+DqeD+XITLpQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiP0qSnyPH/vNz9/5a56v9ki9ApAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABchMsVia3j7bbW+v+Xuez/XITLfwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGaO0IqqzPP/r9D3/3SZ2dUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABchMtboMLt/7vb+/+Bp+H2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXITLNpi76v+72/v/g6nh9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFyEyxKGq+H/rM30/3Sa19IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXITLim+V1fVchMtfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOsQQADrEEAAaxBAAGsQQABrEEAAaxBAAGsQQABrEHwAaxB+D+sQfg/rEH8P6xB/D+sQfw/rEH8P6xB/j+sQQ%3D%3D%22/%3E%3C/menupopup%3E%3C/toolbarbutton%3E%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Dumby
Спасибо, фантастика! Очень удобно новые пункты добавлять. :)

Может, стоит опубликовать в готовых? Полезная кнопка, на мой взгляд.

turbot пишет

Dumby
Спасибо, фантастика! Очень удобно новые пункты добавлять. :)

Может, стоит опубликовать в готовых? Полезная кнопка, на мой взгляд.

Присоединяюсь.
Хотелось бы понять, что она делает и когда её используют.
Спасибо.

difabor пишет

Хотелось бы понять, что она делает и когда её используют.

Вставляет заданные пользователем шаблоны в редакторе Stylish. Полезная штука для лентяев вроде меня. Которым и автодополнения редактора мало. :)

Можно ли в CB использовать переменные процесса FF такие как %MOZILLA_PLUGINS%, %MOZ_PROFILE_PATH% и др. Для чего - для портабельной сборки со своим софтом(хочу сделать себе нечто наподобие ОпераAC).
Есть такая штука как PaleMoon portable и там клёвый загрузчег в котором можно добавлять свои переменные к процессу в проcтом файле *.ini дописывая что нужно.

Например вот

Выделить код

Код:

[Environment]
;(multiple istances)
;MOZ_NO_REMOTE=1
; Путь к папке с прогами
PM_SOFT=$Home$\$AppName$\Profiles\$Profile$\Soft
;(profile path)
MOZ_PROFILE_PATH=$Home$\$AppName$\Profiles\$Profile$


PM_SOFT - это моя добавленная и она есть в "окружении" процесса. И хотелось бы запускать программы из кнопок используя в пути к файлу переменную %PM_SOFT% шобы с флэхи запускать везде.
типа так:
startProcess("%PM_SOFT%\\FVD-Suite\\FVD Downloader\\FVD Downloader.exe",[""]);
... и дальше как в кнопке-примере
scratch_one-s_head.gif
Решено :D

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

okkamas_knife большое спасибо!

bunda1
В кнопках https://forum.mozilla-russia.org/viewto … 06#p543706, https://forum.mozilla-russia.org/viewto … 58#p625358 и https://forum.mozilla-russia.org/viewto … 66#p643966 (а может и еще в каких) стоило бы заменить url("chrome://mozapps/skin/extensions/extensions.svg#greyscale") на grayscale(1), а то с 36-ой версии их убрали.

bunda1
К сообщению turbot, у меня ещё иконка пропадает после нажатия (отключения) и появляется после включения в 3-й кнопке "Переключить JavaScript для сайтов".
FF 36.0.1

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

turbot
Попробовал, не получилось. Сейчас заменил целиком, как Вы написали.

turbot пишет

заменить url("chrome://mozapps/skin/extensions/extensions.svg#greyscale") на grayscale(1)

Работает, спасибо.

Может кто нибудь починить Disable style
https://forum.mozilla-russia.org/viewto … 82#p397782
стиль отключает, а назад не включает.

xrun1 пишет

turbot,
Попробовал, не получилось. Сейчас заменил целиком, как Вы написали.
turbot пишет: заменить url("chrome://mozapps/skin/extensions/extensions.svg#greyscale") на grayscale(1)Работает, спасибо.

Есть еще вариант, вот для примера иконка:
с

Выделить код

Код:

grayscale(1)

aC93aL0.png

и с

Выделить код

Код:

url("data:image/svg+xml;utf8,<svg xmlns=\'http://www.w3.org/2000/svg\'><filter id=\'grayscale\'><feColorMatrix type=\'matrix\' values=\'0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0\'/></filter></svg>#grayscale")

FUypfpZ.png

villa7 пишет

Может кто нибудь починить Disable style
https://forum.mozilla-russia.org/viewto … 82#p397782
стиль отключает, а назад не включает.

А так пробовал ?

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

Выделить код

Код:

gPageStyleMenu._getStyleSheetInfo().authorStyleDisabled
    ? gPageStyleMenu.switchStyleSheet("") : gPageStyleMenu.disableStyle();

turbot пишет

bunda1
В кнопках https://forum.mozilla-russia.org/viewto … 06#p543706, https://forum.mozilla-russia.org/viewto … 58#p625358 и https://forum.mozilla-russia.org/viewto … 66#p643966 (а может и еще в каких) стоило бы заменить url("chrome://mozapps/skin/extensions/extensions.svg#greyscale") на grayscale(1), а то с 36-ой версии их убрали.

Спасибо за ценные замечания, исправил :)

Dumby
Спасибо большое, а то надоело в меню каждый раз лазить.

Пользуюсь кнопкой для коротких ссылок

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

Выделить код

Код:

(function(location){
    var icon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNzQxNEMxNjhCQkFFMzExQjBBMUQ4Qzc3OUM1QjM5QyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0RUQ1MTc3NUJBQUYxMUUzQTcwOUY5Qzg3QkE3RDUwRSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0RUQ1MTc3NEJBQUYxMUUzQTcwOUY5Qzg3QkE3RDUwRSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA4NDE0QzE2OEJCQUUzMTFCMEExRDhDNzc5QzVCMzlDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjA3NDE0QzE2OEJCQUUzMTFCMEExRDhDNzc5QzVCMzlDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+pwkIsgAAA5BJREFUeNq0l11IU2EYx9+zneFyynIFFUXDwmBkDNHYVaJhXVTYh4VUtIu+KIToQ/u4yoiWFBkkfVwUBHURZhRh3hSVN90oJESDunARBactE1KHm9P1f8ZzYm4785zDfODHznbec97nfd7n/T/PpGQyKQppvb29orW1VZSUlNDXleAs2AGWg5/gBbgGvtMAi5g/qwVvQQtPLvizhX+vnRcHZFmmjwpe6WqNYfT7c7BGzrwzPj4uIpGIkCTJlAOKogiLxXIRl2VzDHWB9iwH+vv7RVtbm3A4HGaDsLC4uHizzrGbshyYmZkRiURCTE9Pm5odkXMROocvlnO8gEKYwqQ5aR3AqmNsvJBJuBCcp5MIbDqf+SIXYGI7OAjOgFUGn+3KuQU6jUK8F5wDlSYcfwQeyJlKSEmow7aDC8Cncf8luA42gBNgqfruaDSq4PIOCNBPUlNTU/qDXujAlnA4XIEk/IvvH3hPo3x/I0/coDHxO3AVvE7PdLAep2qJ0+n8VVdXN4Ao//4f8crKVPRsrM8tVqvVxmqm2idwA2wFezQmHgQd4JlWyGKxmPB4PKK7u3u2chYVFdHnLXBM49l14KHGvSCH+jFIzLVvtAW05el5RkttzjO5ln0DN8H9tO0xVzvAaSNSD25zEv0pSPECVQbGnwJPClk9jSrhNhNik9p7SsKpqamcDnw08K79PP4uWKvnASpqLpdL1NTUCDpxmUInVVdXN5sM6yR4SnIKBjTGuLFyu8/nCzc2No6qSktAD1JtGzkgeEX5TkKMK9yCXItk5etiISI7Ao4CDyazI/TheDxO4nQFpf4rtEb09fWJ8vJyIdPesFxOagjRZ3aOsv4k2AccGTVhJ/OKnd2l3qRzj/ctA34SM+TDbszxXi33RqVY7feOA3rhIhMJqcCBqp6eHsXtdgsps/hQW00tGbfV+WwFOAwO8bXuEwEHLsGBdnLAoiaFioFO6Ac1lawj1AuEDASiIV2IZpmJPypU2TrBSJ6akdUL0vbTdFkOUEM6NjZmvC2y28M2m03vAsjpZM4I0NHw+/30QkMODA0NDYZCoVFke5mO4W80t8Dr9aYwaoFAIBIMBjtLS0sv6yho98zWAk0jnUcSd3BvoGUj3EcqmhEwa1A6MTExkcApOkB/sFgNPdw1R7hNC+AYppRQzRWpUH/PkQNieHhYUCKm1wJ2IAxG1VNGx72+vj6lNf8EGADGSCd20PLWBgAAAABJRU5ErkJggg==';
    if (location.protocol.startsWith('http')) {
        var xhr = new XMLHttpRequest();
        var request = {
            longUrl : location.toString(),
            key     : '{YOUR_API_KEY}'
        }
        xhr.onload = function(){
            var link = JSON.parse(xhr.response).id;

            const gClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);
            gClipboardHelper.copyString(link)
            
            try {
                Components.classes["@mozilla.org/alerts-service;1"].getService(Components.interfaces.nsIAlertsService)
                    .showAlertNotification(icon, link, 'Скопирован в буфер обмена', false, "", null, "");
            } catch (e) {}
        }
        xhr.open('POST', 'https://www.googleapis.com/urlshortener/v1/url', true);
        xhr.setRequestHeader("Content-type", "application/json");
        xhr.send(JSON.stringify(request));
    }
})(content.window.location);


На 36.0.3 перестала работать. Поправьте пожалуйста, или подскажите другую.

Mishania пишет

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

На FF24 тоже не работает, наверно сервис коротких ссылок изменился или глючит.

Mishania

"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."

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

Выделить код

Код:

(function(location){
    var icon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowNzQxNEMxNjhCQkFFMzExQjBBMUQ4Qzc3OUM1QjM5QyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0RUQ1MTc3NUJBQUYxMUUzQTcwOUY5Qzg3QkE3RDUwRSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0RUQ1MTc3NEJBQUYxMUUzQTcwOUY5Qzg3QkE3RDUwRSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA4NDE0QzE2OEJCQUUzMTFCMEExRDhDNzc5QzVCMzlDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjA3NDE0QzE2OEJCQUUzMTFCMEExRDhDNzc5QzVCMzlDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+pwkIsgAAA5BJREFUeNq0l11IU2EYx9+zneFyynIFFUXDwmBkDNHYVaJhXVTYh4VUtIu+KIToQ/u4yoiWFBkkfVwUBHURZhRh3hSVN90oJESDunARBactE1KHm9P1f8ZzYm4785zDfODHznbec97nfd7n/T/PpGQyKQppvb29orW1VZSUlNDXleAs2AGWg5/gBbgGvtMAi5g/qwVvQQtPLvizhX+vnRcHZFmmjwpe6WqNYfT7c7BGzrwzPj4uIpGIkCTJlAOKogiLxXIRl2VzDHWB9iwH+vv7RVtbm3A4HGaDsLC4uHizzrGbshyYmZkRiURCTE9Pm5odkXMROocvlnO8gEKYwqQ5aR3AqmNsvJBJuBCcp5MIbDqf+SIXYGI7OAjOgFUGn+3KuQU6jUK8F5wDlSYcfwQeyJlKSEmow7aDC8Cncf8luA42gBNgqfruaDSq4PIOCNBPUlNTU/qDXujAlnA4XIEk/IvvH3hPo3x/I0/coDHxO3AVvE7PdLAep2qJ0+n8VVdXN4Ao//4f8crKVPRsrM8tVqvVxmqm2idwA2wFezQmHgQd4JlWyGKxmPB4PKK7u3u2chYVFdHnLXBM49l14KHGvSCH+jFIzLVvtAW05el5RkttzjO5ln0DN8H9tO0xVzvAaSNSD25zEv0pSPECVQbGnwJPClk9jSrhNhNik9p7SsKpqamcDnw08K79PP4uWKvnASpqLpdL1NTUCDpxmUInVVdXN5sM6yR4SnIKBjTGuLFyu8/nCzc2No6qSktAD1JtGzkgeEX5TkKMK9yCXItk5etiISI7Ao4CDyazI/TheDxO4nQFpf4rtEb09fWJ8vJyIdPesFxOagjRZ3aOsv4k2AccGTVhJ/OKnd2l3qRzj/ctA34SM+TDbszxXi33RqVY7feOA3rhIhMJqcCBqp6eHsXtdgsps/hQW00tGbfV+WwFOAwO8bXuEwEHLsGBdnLAoiaFioFO6Ac1lawj1AuEDASiIV2IZpmJPypU2TrBSJ6akdUL0vbTdFkOUEM6NjZmvC2y28M2m03vAsjpZM4I0NHw+/30QkMODA0NDYZCoVFke5mO4W80t8Dr9aYwaoFAIBIMBjtLS0sv6yho98zWAk0jnUcSd3BvoGUj3EcqmhEwa1A6MTExkcApOkB/sFgNPdw1R7hNC+AYppRQzRWpUH/PkQNieHhYUCKm1wJ2IAxG1VNGx72+vj6lNf8EGADGSCd20PLWBgAAAABJRU5ErkJggg==';
    if (location.protocol.startsWith('http')) {
        var xhr = new XMLHttpRequest();
        var request = {
            longUrl : location.toString()
        }
        xhr.onload = function(){
            var link = JSON.parse(xhr.response).id;

            const gClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);
            gClipboardHelper.copyString(link)
            
            try {
                Components.classes["@mozilla.org/alerts-service;1"].getService(Components.interfaces.nsIAlertsService)
                    .showAlertNotification(icon, link, 'Скопирован в буфер обмена', false, "", null, "");
            } catch (e) {}
        }
        xhr.open('POST', 'https://www.googleapis.com/urlshortener/v1/url?key=AIzaSyC7uWVak6m9AFIMORinK4gfNZZ5IrNPgKA', true);
        xhr.setRequestHeader("Content-type", "application/json");
        xhr.send(JSON.stringify(request));
    }
})(content.window.location);

Lex1
Большое спасибо.
PS. Гугл отказывается сокращать ссылки на рутрекер.
http://goo.gl/WGCB
Можно как-то победить?

Кнопка Linkification (Делает текстовые ссылки кликабельными) но для этого кнопку нужно каждый раз кликать)
Можно ли сделать так, чтобы она автоматом сканировала открывающуюся страницу на наличие ссылок без клика по кнопке???

Quartz1t
Есть ещё скрипт ,после него кнопка ну очень редко нужна.

VORON, спасибо, но всё же хотелось бы автоматизировать кнопку.

Quartz1t
Можно клавиатурное сочетание повесить или жест. Для FireGestures такой:

Выделить код

Код:

document.getElementsByAttribute("label", "Linkification")[0].doCommand();

P.S. "Linkification" - название кнопки, т.е. то, что при редактировании кнопки "Имя (N):"

Доброго времени суток.

Имеется кнопка, собранная по видимому из кусков кода для открытия закладок, но тем не менее работающая.

Выделить код

Код:

/*Initialization Code*/
this.tooltipText = "L = Открыть в боковой панели\n" + "M = Открыть в окне\n" + "R = Открыть во вкладке\n\n" +
                   "Shift-R = Меню кнопки";

this. onclick = function (event)
{

    if (event. button == 0)
    PlacesCommandHook.showPlacesOrganizer('AllBookmarks') 

    if (event. button == 1) toggleSidebar('viewBookmarksSidebar');


    if (event. button == 2 && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
    getBrowser (). selectedTab = getBrowser (). addTab ("chrome://browser/content/places/places.xul")
    }
    
    if(event.button == 2 && !event.shiftKey && !event.altKey && !event.metaKey) {
    event.preventDefault();
    event.stopPropagation();
    }
};

Можно-ли как-нибудь на ЛКМ повесить функционал "родной" кнопки, не библиотеки (редактора закладок) как сделано, а целиком : меню с закладками и пунктами "показать закладки", "редактировать закладки" ну и ниже сами закладки. То есть :

s_1427221262_7074749_9b5d9345de.png

Решения на форуме не нашёл (пропустил ?)
Спасибо.

Мне кажется тут легче повесить на "родную" кнопку дополнительные клики, пример:

Выделить код

Код:

addEventListener("click", function(e) {   
   
   if ( e.button == 1 ) { 
        alert("1");
        }
   
   if ( e.button == 2 ) {
        e.preventDefault();
        e.stopPropagation();
        
        alert("2");
        }
        
}, false, document.getElementById("bookmarks-menu-button") );

Я когда писал, под "родной" имел в виду собственную кнопку [firefox], встроенную. Её ведь не изменишь.

Выделить код

Код:

if ( !this.lastChild ) {
  var mc = document.getElementById("bookmarksMenuPopup");
  var mcc = mc.cloneNode( true );
  this.appendChild( mcc );
}

var bo = document.getBoxObjectFor( this );
this.lastChild.showPopup ( this, -1, -1, "popup", "bottomleft", "topleft" );

bunda1, спасибо огромное. Всё прекрасно работает и что называется "душа спокойна".
Искренне благодарю. :beer:

okkamas_knife пишет

bunda1
у кнопки Запуск VBScript обнаружился баг:
вводим простой скрипт
MsgBox "Как видно?"
запускаем и видим в сообщении  0: 284=>?
это изза перекодировки при сохранении. UTF-8 решил бы проблему но vbs его не понимает..пичалька

Да, проблема :(

okkamas_knife пишет

UTF-8 решил бы проблему но vbs его не понимает..пичалька

Вот так можно:

Выделить код

Код:

var data = self.Help;
var suc = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
    .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
suc.charset = "UTF-16";
data = suc.ConvertFromUnicode(data);

var file = Services.dirsvc.get('ProfD', Ci.nsIFile);
file.append("runVBScript.vbs");
custombuttonsUtils.writeFile(file.path, data);
file.launch();

Infocatcher
Отлично, большое спасибо :)

Кстати, так тоже работает:

Выделить код

Код:

var file = Services.dirsvc.get('ProfD', Ci.nsIFile);
file.append("runVBScript.vbs");
custombuttonsUtils.writeFile( file.path, convertFromUnicode("UTF-16", self.Help) );
file.launch();

25-03-2015 19:33:52

okkamas_knife пишет

кстати а ведь спич апи можно заюзать вместо заморочек со звуковыми файлами для сигнализации о каких либо событиях
CreateObject("SAPI.SpVoice").Speak " user is online "
CreateObject("SAPI.SpVoice").Speak " meow!"
или даже так
CreateObject("SAPI.SpVoice").Speak "~waka~waka~waka~/~waka~waka~waka~/~waka~waka~waka~/~waka~waka~waka~/"

Прикольно, смотрю ты что то соображаешь в VBScript, а не подскажешь код для кнопки который после закрытия Firefox выключает программу или процесс через:

Выделить код

Код:

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
    ("Select * from Win32_Process Where Name = 'Notepad.exe'")
For Each objProcess in colProcessList
    objProcess.Terminate()
Next

Вот тут есть что то похожее 26-05-2006 22:53:49 но код также запускает Firefox что не нужно.

okkamas_knife
Жаль, жаль, но и на этом спасибо.

Я не знаю за VBSscript, просто может каг идея...

bunda1 пишет

код для кнопки который после закрытия Firefox выключает программу или процесс

Можно сделать процесс Firefox доченним и запускать его из своего скрипта, который и будет ждать закрытия бравзера и затем выполнять остальной код по уничтожению.
Грубый но рабочий пример на cmd :

Выделить код

Код:

@start/wait "" "%~dp0Palemoon-Portable.exe"
@taskkill /F /im notepad.exe
@exit

Переписать тоже самое на VBS думаю можно :) Т.е. отдать ОС всю эту суету по отслеживанию и запуску убийства.

Скажите,есть ли кнопка-остановить/перезагрузить страницу?После 28 го лиса,очень не хватает.

Что-то вроде этого не подойдёт ?
https://forum.mozilla-russia.org/viewto … 90#p416590

VORON пишет

Скажите,есть ли кнопка-остановить/перезагрузить страницу?После 28 го лиса,очень не хватает.

Остановить - Перезагрузить

bunda1
Спасибо,то что надо!

Ослеп и ничего не вижу. Для 39 (Developer Edition ) не ? :(

bunda1
А нельзя яркость у кнопки увеличить?Уж больно тусклая на фоне остальных
http://i.imgur.com/UpwPSwh.png

VORON пишет

bunda1
А нельзя яркость у кнопки увеличить?Уж больно тусклая на фоне остальных
http://i.imgur.com/UpwPSwh.png

Можно конечно, замени иконку кнопки или Css стилем изменить или положить в кнопку что то типа:

Выделить код

Код:

this.style.cssText = "opacity: 1 !important;"; // Css стиль для кнопки

Есть кнопочка Proxy В ней по ЛКМ меняется состояние network.proxy.type с 1 на 0 и обратно. Я сменил на 2 и 5

Выделить код

Код:

if ( e.button == 0 ) { 
        cbu.setPrefs("network.proxy.type", (cbu.getPrefs("network.proxy.type") == 2 ) ? 5 : 2 );
        }

но так как я совсем нифига не понимаю ни в коде, ни в кнопках, то у меня не меняется состояние иконки, с красного на зеленый :( . какой параметр подкрутить?

о! понял

Выделить код

Код:

// Установливать нужную иконку кнопки при старте баузера или при изменениях в 'about:config' ................................
var  s = "network.proxy.type";
function toggleImage() {
    var icon = self.ownerDocument.getAnonymousElementByAttribute( self, "class", "toolbarbutton-icon");
    icon.src = ( cbu.getPrefs(s) == 2 )

надо менять cbu.getPrefs(s) == с 2 на 5, ну или наоборот.

Что не так снопкой, поглядите...
Нужно запустиь программу с двумя параметрами из папки профиля. Не получается, подставляется только второй параметр(урл) , а "средний"  который должен не вставляется.
Нужно так       ProfD\Soft\Tools\DomainHostingView.exe /StartDomain [url]
Второй парам. не подставляется. Щас сделал чтобы копировался в буфер, вариант в общем-то... но хотелось бы сразу. Поглядите

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

Выделить код

Код:

var urllink = getBrowser().currentURI.spec;
    gClipboard.write(urllink);
var param="/StartDomain";

     var file = Services.dirsvc.get('ProfD', Ci.nsIFile);
            file.initWithPath(file.path + "\\Soft\\Tools\\DomainHostingView.exe"); 

        startProcess(file.path,param,[urllink]);

        function startProcess(path,param,args) {
    var file = Components.classes["@mozilla.org/file/local;1"]
        .createInstance(Components.interfaces.nsILocalFile);

     file.initWithPath(path);

    if(file.exists()) {
       var process = Components.classes["@mozilla.org/process/util;1"]
              .createInstance(Components.interfaces.nsIProcess);
       process.init(file);
        process.run(false, args, args.length);
      } else custombuttons. alertBox ("URL не найден", path); 
};

HaGEN пишет

Что не так снопкой, поглядите...

Выделить код

Код:

var file = Services.dirsvc.get('ProfD', Ci.nsIFile);
   file.initWithPath(file.path + "\\Soft\\Tools\\DomainHostingView.exe");
   var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
   process.init(file);
   process.run(false, ["/StartDomain",content.window.location], 1);
bunda1 пишет

process.run(false, ["/StartDomain",content.window.location], 1);

Почему не
process.run(false, ["/StartDomain", content.document.domain], 2);

Благодарю bunda1! такой "упрощенный" вариант даже лучше.
Еле догнал методом тыка что последняя цифра в process.run(...) отвечает за количество параметров :lol:
Теперь бы узнать что означает первый , который обычно всегда false в примерах..?

Выделить код

Код:

var url = getBrowser().currentURI.spec;
    
 var file = Services.dirsvc.get('ProfD', Ci.nsIFile);
    file.initWithPath(file.path + "\\Soft\\Tools\\DomainHostingView.exe");
   var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
   process.init(file);
   process.run(false, ["/StartDomain", url], 2);

19-04-2015 21:24:01
Dumby - ну очепятка, бываить ;)

19-04-2015 21:47:42
Dumby блин, дошло до меня :(   Именно так, сударь!    content.document.domain  ибо на httpS страницах программа сама не фильтрует. Так вообще законченная кнопка, идеальная.
bunda1 мне поправил именно то шо я просил, без "отсебя", хехех... за дополнение благодарю.

Выделить код

Код:

var file = Services.dirsvc.get('ProfD', Ci.nsIFile);
    file.initWithPath(file.path + "\\Soft\\Tools\\DomainHostingView.exe");
   var process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
   process.init(file);
   process.run(false, ["/StartDomain", content.document.domain], 2);

bunda1
Что-то поменялось в 37-й лисе,что кнопка VT ,при запуске лисы всегда запускается развёрнутой.

VORON
Попробуй последнюю версию:

Выделить код

Код:

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%3EVT%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/x-icon%3Bbase64%2CAAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAKP+AAIX/gAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4AAFf+AABUAAAAAAAAAAAAAAAAAAAAA/4AAJP+AAP//gAD//4AA//+AACQAAAAAAAAAAAAAAAAAAAAA/4AAEv+AAP//gAD//4AAEgAAAAAAAAAA/4AAIP+AAP//gAD//4AA//+AAP//gAD//4AAJgAAAAAAAAAAAAAAAP+AABH/gAD//4AA//+AABEAAAAAAAAAAP+AAP//gAD//4AA//+AADb/gAD//4AA//+AAP//gAAQAAAAAAAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAD//4AA//+AACAAAAAA/4AAIP+AAP//gAD//4AAEQAAAAAAAAAA/4AAD/+AAP//gAD//4AADwAAAAAAAAAA/4AA//+AAP//gAAMAAAAAP+AAAz/gAD//4AA//+AAA8AAAAAAAAAAP+AAA//gAD//4AA//+AAA8AAAAAAAAAAP+AAP//gAD//4AADwAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAAP/4AA//+AAP//gAAPAAAAAAAAAAD/gAD//4AA//+AAA8AAAAA/4AAD/+AAP//gAD//4AADAAAAAAAAAAA/4AACv+AAP//gAD//4AACgAAAAAAAAAA/4AA//+AAP//gAAPAAAAAP+AAA//gAD//4AA//+AAAv/gAAL/4AADP+AACH/gAD//4AA//+AACH/gAAK/4AAD/+AAP//gAD//4AAEQAAAAD/gAAR/4AA//+AAP//gAAm/4AA//+AAP//gAD//4AA//+AAP//gAD//4AA//+AAP//gAD//4AA//+AABIAAAAA/4AAEv+AAP//gAD//4AAJ/+AAP//gAD//4AA//+AAP//gAD//4AA//+AAP//gAD//4AAEf+AABIAAAAAAAAAAAAAAAD/gAAV/4AAEgAAAAD/gAAQ/4AAEf+AAA//gAAP/4AAD/+AAA//gAAP/4AADwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//+sQe//rEHH56xBg8OsQQHDrEEAw6xBEMOsQRDDrEEQw6xBEMOsQRAArEEQAKxBEACsQTkArEH//6xB//+sQQ%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20vto%20%3D%20%7B%0A%09distanceShow%3A%202%2C%0A%09distanceHide%3A%2064%2C%0A%09showDelay%3A%20320%2C%0A%09color%3A%20%22%23green%22%2C%0A%09fringe%3A%20%22black%22%2C%0A%09padding%3A%203%2C%0A%09name%3A%20%22VT%22%2C%0A%0A%09btn%3A%20this%2C%0A%09tcm%3A%20document.getElementById%28%22toolbar-context-menu%22%29%2C%0A%09ctm%3A%20document.getElementById%28%22customization-toolbar-menu%22%29%2C%0A%09deck%3A%20document.getElementById%28%22content-deck%22%29%2C%0A%09id%3A%20%22cb-vt%22%2C%0A%0A%09get%20cust%28%29%20gBrowser.currentURI.spec%20%3D%3D%20%22about%3Acustomizing%22%2C%0A%09get%20rdf%28%29%20%7B%0A%09%09delete%20this.rdf%3B%0A%09%09var%20rdf%20%3D%20Cc%5B%22@mozilla.org/rdf/rdf-service%3B1%22%5D.getService%28Ci.nsIRDFService%29%3B%0A%09%09return%20this.rdf%20%3D%20%5B%0A%09%09%09rdf%2C%0A%09%09%09rdf.GetDataSource%28%22rdf%3Alocal-store%22%29%2C%0A%09%09%09rdf.GetResource%28location%20+%20%22%23%22%20+%20this.id%29%2C%0A%09%09%09null%2C%20null%0A%09%09%5D%3B%0A%09%7D%2C%0A%09init%3A%20function%28%29%20%7B%0A%09%09if%20%28this.cust%20%7C%7C%20this.btn._destructors.length%29%20return%3B%0A%0A%09%09var%20vt%20%3D%20this.initVT%28%29%3B%0A%09%09var%20vto%20%3D%20this%3B%0A%0A%09%09this.btn.onclick%20%3D%20function%28e%29%20%7B%0A%09%09%09e.button%20%7C%7C%20vto.toggleVT%28%29%3B%0A%09%09%7D%0A%09%09window.addEventListener%28%22popupshown%22%2C%20this%2C%20false%29%3B%0A%09%09window.addEventListener%28%22popuphidden%22%2C%20this%2C%20false%29%3B%0A%09%09window.addEventListener%28%22resize%22%2C%20this%2C%20false%29%3B%0A%09%09this.tcm.addEventListener%28%22command%22%2C%20this%2C%20false%29%3B%0A%09%09this.tcm.addEventListener%28%22popupshowing%22%2C%20this%2C%20false%29%3B%0A%0A%09%09if%20%28vt.hasOwnProperty%28%22on%22%29%29%20%7B%0A%09%09%09vto.toggleVT%28vt.on%29%3B%0A%09%09%7D%20else%20%7B%0A%09%09%09var%20%5Brdf%2C%20ds%2C%20source%5D%20%3D%20this.rdf%3B%0A%09%09%09var%20property%20%3D%20rdf.GetResource%28%22collapsed%22%29%3B%0A%09%09%09var%20target%20%3D%20ds.GetTarget%28source%2C%20property%2C%20true%29%3B%0A%09%09%09var%20collapsed%20%3D%20target%20%26%26%20target.QueryInterface%28Ci.nsIRDFLiteral%29.Value%20%3D%3D%20%22true%22%3B%0A%09%09%09vto.toggleVT%28%21collapsed%29%3B%0A%09%09%7D%0A%09%09this.resize%28%29%3B%0A%09%09vto.btn._destructors.push%28%7Bcontext%3A%20vto%2C%20destructor%3A%20vto.destroy%7D%29%3B%0A%09%7D%2C%0A%09destroy%3A%20function%28reason%29%20%7B%0A%09%09window.removeEventListener%28%22popupshown%22%2C%20this%2C%20false%29%3B%0A%09%09window.removeEventListener%28%22popuphidden%22%2C%20this%2C%20false%29%3B%0A%09%09window.removeEventListener%28%22resize%22%2C%20this%2C%20false%29%3B%0A%09%09this.tcm.removeEventListener%28%22command%22%2C%20this%2C%20false%29%3B%0A%09%09this.tcm.removeEventListener%28%22popupshowing%22%2C%20this%2C%20false%29%3B%0A%09%09this.setCollapser%28false%29%3B%0A%0A%09%09if%20%28reason%20%3D%3D%20%22destructor%22%20%26%26%20this.cust%29%20%7B%0A%09%09%09var%20vto%20%3D%20this%3B%0A%09%09%09vto.resize%28%29%3B%0A%0A%09%09%09gNavToolbox.addEventListener%28%22customizationready%22%2C%20vto%2C%20false%29%3B%0A%09%09%09CustomizableUI.addListener%28vto%29%3B%0A%0A%09%09%09this.ctm.addEventListener%28%22command%22%2C%20vto%2C%20false%29%3B%0A%09%09%09this.ctm.addEventListener%28%22popupshowing%22%2C%20vto%2C%20false%29%3B%0A%09%09%09window.addEventListener%28%22resize%22%2C%20vto%2C%20false%29%3B%0A%0A%09%09%09gNavToolbox.addEventListener%28%22aftercustomization%22%2C%20function%20ac%28%29%20%7B%0A%09%09%09%09gNavToolbox.removeEventListener%28%22aftercustomization%22%2C%20ac%2C%20false%29%3B%0A%09%09%09%09gNavToolbox.removeEventListener%28%22customizationready%22%2C%20vto%2C%20false%29%3B%0A%09%09%09%09CustomizableUI.removeListener%28vto%29%3B%0A%0A%09%09%09%09vto.ctm.removeEventListener%28%22command%22%2C%20vto%2C%20false%29%3B%0A%09%09%09%09vto.ctm.removeEventListener%28%22popupshowing%22%2C%20vto%2C%20false%29%3B%0A%09%09%09%09window.removeEventListener%28%22resize%22%2C%20vto%2C%20false%29%3B%0A%0A%09%09%09%09document.getElementById%28vto.btn.id%29%20%7C%7C%20vto.destroyVT%28%29%3B%0A%0A%09%09%09%7D%2C%20false%29%3B%0A%09%09%7D%0A%09%09if%20%28reason%20%3D%3D%20%22delete%22%29%20%7B%0A%09%09%09CustomizableUI.removeWidgetFromArea%28this.btn.id%29%3B%0A%09%09%09this.destroyVT%28%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09handleEvent%3A%20function%28e%29%20this%5Be.type%5D%28e%29%2C%0A%0A%09command%3A%20function%28e%29%20%7B%0A%09%09if%20%28e.target.id%20%21%3D%20%22toggle_%22%20+%20this.id%29%20return%3B%0A%09%09e.preventDefault%28%29%3B%0A%09%09this.toggleVT%28%29%3B%0A%09%7D%2C%0A%09popupshowing%3A%20function%28e%29%20%7B%0A%09%09var%20menuitem%20%3D%20e.target.querySelector%28%22%23toggle_%22%20+%20this.id%29%3B%0A%09%09menuitem%20%26%26%20menuitem.setAttribute%28%22checked%22%2C%20this.vt.on%29%3B%0A%09%09if%20%28this.cust%20%7C%7C%20%21this.vt.contains%28e.target.triggerNode%29%29%20return%3B%0A%09%09for%28var%20selector%20of%20%5B%22.customize-context-moveToPanel%22%2C%20%22.customize-context-removeFromToolbar%22%5D%29%20%7B%0A%09%09%09menuitem%20%3D%20e.target.querySelector%28selector%29%3B%0A%09%09%09menuitem%20%26%26%20menuitem.removeAttribute%28%22disabled%22%29%3B%0A%09%09%7D%0A%09%7D%2C%0A%09mousemove%3A%20function%20collapser%28e%29%20%7B%0A%09%09var%20distance%20%3D%20collapser.distance%20%3D%20e.screenX%20-%20document.documentElement.boxObject.screenX%3B%0A%09%09if%20%28collapser.waiting%29%20return%3B%0A%09%09if%20%28distance%20%3C%3D%20this.distanceShow%20%26%26%20this.vt.collapsed%29%20%7B%0A%09%09%09if%20%28this.showDelay%20%3C%201%29%20%7B%0A%09%09%09%09this.vt.collapsed%20%3D%20false%3B%0A%09%09%09%09return%3B%0A%09%09%09%7D%0A%09%09%09collapser.waiting%20%3D%20true%3B%0A%09%09%09setTimeout%28function%28vto%29%20%7B%0A%09%09%09%09if%20%28collapser.distance%20%3E%3D%20vto.distanceShow%29%20%7B%0A%09%09%09%09%09collapser.waiting%20%3D%20false%3B%0A%09%09%09%09%09return%3B%0A%09%09%09%09%7D%0A%09%09%09%09vto.vt.collapsed%20%3D%20false%3B%0A%09%09%09%09collapser.waiting%20%3D%20false%3B%0A%09%09%09%7D%2C%20this.showDelay%2C%20this%29%3B%0A%09%09%7D%0A%09%09if%20%28distance%20%3E%3D%20this.distanceHide%20%26%26%20%21this.vt.collapsed%29%0A%09%09%09this.vt.collapsed%20%3D%20true%3B%0A%09%7D%2C%0A%09setCollapser%3A%20function%28set%29%20%7B%0A%09%09set%0A%09%09%3F%20this.cust%20%7C%7C%20window.addEventListener%28%22mousemove%22%2C%20this%2C%20false%29%0A%09%09%3A%20window.removeEventListener%28%22mousemove%22%2C%20this%2C%20false%29%3B%0A%09%7D%2C%0A%09callCollapser%3A%20function%28e%29%20%7B%0A%09%09this.mousemove%28%7BscreenX%3A%20document.documentElement.boxObject.screenX%20+%20MousePosTracker._x%7D%29%3B%0A%09%7D%2C%0A%09customizationready%3A%20function%28%29%20%7B%0A%09%09window.removeEventListener%28%22customizationready%22%2C%20this%2C%20false%29%3B%0A%09%09this.vt.on%20%26%26%20this.insertBox%28true%29%3B%0A%09%7D%2C%0A%09resize%3A%20function%28e%29%20%7B%0A%09%09this.vt.style.maxHeight%20%3D%20this.deck.boxObject.height%20+%201%20+%20%22px%22%3B%0A%09%7D%2C%0A%09popupshown%3A%20function%28e%29%20this.handlePopup%28e%29%2C%0A%09popuphidden%3A%20function%28e%29%20this.handlePopup%28e%29%2C%0A%0A%09handlePopup%3A%20function%28e%29%20%7B%0A%09%09if%20%28%0A%09%09%09this.vt.collapsed%20%7C%7C%20this.vt.on%0A%09%09%09%7C%7C%20%28e.target.localName%20%21%3D%20%22menupopup%22%20%26%26%20e.target.localName%20%21%3D%20%22panel%22%29%0A%09%09%29%20return%3B%0A%09%09setTimeout%28function%28vto%29%20%7B%0A%09%09%09var%20hasPopup%20%3D%20Array.concat%28%0A%09%09%09%09Array.slice%28document.getElementsByTagName%28%22menupopup%22%29%29%2C%0A%09%09%09%09Array.slice%28document.getElementsByTagName%28%22panel%22%29%29%0A%09%09%09%29.some%28function%28popup%29%0A%09%09%09%09%22state%22%20in%20popup%20%26%26%20popup.state%20%3D%3D%20%22open%22%20%26%26%20%28%0A%09%09%09%09%09vto.vt.contains%28popup%29%0A%09%09%09%09%09%7C%7C%20%28%22triggerNode%22%20in%20popup%20%26%26%20vto.vt.contains%28popup.triggerNode%29%29%0A%09%09%09%09%09%7C%7C%20%28%0A%09%09%09%09%09%09%22anchorNode%22%20in%20popup%20%26%26%20popup.anchorNode%20%26%26%20%28%0A%09%09%09%09%09%09%09vto.vt.contains%28popup.anchorNode%29%0A%09%09%09%09%09%09%09%7C%7C%20vto.vt.contains%28document.getBindingParent%28popup.anchorNode%29%29%0A%09%09%09%09%09%09%29%0A%09%09%09%09%09%29%0A%09%09%09%09%29%0A%09%09%09%29%3B%0A%09%09%09vto.setCollapser%28%21hasPopup%29%3B%0A%09%09%09hasPopup%20%7C%7C%20vto.callCollapser%28%29%3B%0A%09%09%7D%2C%20200%2C%20this%29%3B%0A%09%7D%2C%0A%09onWidgetAfterDOMChange%3A%20function%28...a%29%20%7B%0A%09%09if%20%28a%5B2%5D%20%3D%3D%20this.vt.box%29%20this.vt.hbox.style.minWidth%20%3D%20this.vt.boxObject.width%20+%20%22px%22%3B%0A%09%7D%2C%0A%09initVT%3A%20function%28%29%20%7B%0A%09%09var%20id%20%3D%20this.id%3B%0A%09%09var%20boxId%20%3D%20id%20+%20%22-customization-target%22%3B%0A%09%09var%20vt%20%3D%20this.vt%20%3D%0A%09%09%09document.getElementById%28id%29%20%7C%7C%0A%09%09%09document.createElement%28%22toolbar%22%29%3B%0A%09%09var%20attrs%20%3D%20%7B%0A%09%09%09id%3A%20id%2C%0A%09%09%09mode%3A%20%22icons%22%2C%0A%09%09%09iconsize%3A%20%22small%22%2C%0A%09%09%09orient%3A%20%22vertical%22%2C%0A%09%09%09customizable%3A%20%22true%22%2C%0A%09%09%09persist%3A%20%22collapsed%22%2C%0A%09%09%09toolbarname%3A%20this.name%2C%0A%09%09%09fullscreentoolbar%3A%20%22true%22%2C%0A%09%09%09class%3A%20%22chromeclass-toolbar%22%2C%0A%09%09%09context%3A%20%22toolbar-context-menu%22%2C%0A%09%09%09style%3A%20%22-moz-appearance%3A%20none%3B%20display%3A%20-moz-box%3B%20height%3A%20100%25%3B%20position%3A%20fixed%3B%20min-width%3A%2020px%22%0A%09%09%7D%3B%0A%09%09for%28var%20attr%20in%20attrs%29%20vt.setAttribute%28attr%2C%20attrs%5Battr%5D%29%3B%0A%09%09if%20%28%21vt.parentNode%29%20%7B%0A%0A%09%09%09var%20box%20%3D%20vt.box%20%3D%20document.createElement%28%22vbox%22%29%3B%0A%09%09%09vt.appendChild%28box%29%3B%0A%09%09%09box.id%20%3D%20boxId%3B%0A%09%09%09box.style.cssText%20%3D%20%22height%3A%20100%25%3B%20width%3A%20100%25%3B%22%0A%0A%09%09%09vt.customizationTarget%20%3D%20box%3B%0A%09%09%09gNavToolbox.appendChild%28vt%29%3B%0A%0A%09%09%09if%20%28CustomizableUI.areas.indexOf%28id%29%20%3D%3D%20-1%29%20%7B%0A%09%09%09%09CustomizableUI.registerArea%28id%2C%20%7Blegacy%3A%20true%7D%29%3B%0A%09%09%09%7D%0A%09%09%09box.removeAttribute%28%22class%22%29%3B%0A%09%09%09box.__defineGetter__%28%22localName%22%2C%20function%28%29%20arguments.callee.caller%20%3D%3D%20custombutton.buttonConstructor%20%3F%20%22toolbar%22%20%3A%20%22vbox%22%29%3B%0A%0A%09%09%09vt.hbox%20%3D%20document.createElement%28%22hbox%22%29%3B%0A%09%09%09vt.hbox.id%20%3D%20id%20+%20%22-hbox%22%3B%0A%09%09%7D%0A%09%09vt.box.style.padding%20%3D%20%220%20%22%20+%20this.padding%20+%20%22px%22%3B%0A%09%09vt.style.backgroundColor%20%3D%20this.color%3B%0A%09%09vt.style.borderRight%20%3D%20%221px%20solid%20%22%20+%20this.fringe%3B%0A%09%09return%20vt%3B%0A%09%7D%2C%0A%09destroyVT%3A%20function%28reason%29%20%7B%0A%09%09var%20vt%20%3D%20this.vt%3B%0A%09%09CustomizableUI.unregisterArea%28vt.id%2C%20%7B%7D%29%3B%0A%09%09vt.hbox.parentNode%20%26%26%20vt.hbox.parentNode.removeChild%28vt.hbox%29%3B%0A%09%09vt.parentNode%20%26%26%20vt.parentNode.removeChild%28vt%29%3B%0A%0A%09%09var%20%5Brdf%2C%20ds%2C%20source%2C%20property%2C%20target%5D%20%3D%20this.rdf%3B%0A%09%09var%20enumerator%20%3D%20ds.ArcLabelsOut%28source%29%3B%0A%09%09while%28enumerator.hasMoreElements%28%29%29%20%7B%0A%09%09%09property%20%3D%20enumerator.getNext%28%29%3B%0A%09%09%09target%20%3D%20ds.GetTarget%28source%2C%20property%2C%20true%29%3B%0A%09%09%09ds.Unassert%28source%2C%20property%2C%20target%29%3B%0A%09%09%7D%0A%09%09target%20%3D%20source.QueryInterface%28Ci.nsIRDFNode%29%3B%0A%09%09source%20%3D%20rdf.GetResource%28location%29%3B%0A%09%09property%20%3D%20rdf.GetResource%28%22http%3A//home.netscape.com/NC-rdf%23persist%22%29%3B%0A%09%09ds.Unassert%28source%2C%20property%2C%20target%29%3B%0A%09%7D%2C%0A%09insertBox%3A%20function%28ins%29%20%7B%0A%09%09var%20vt%20%3D%20this.vt%3B%0A%09%09var%20box%20%3D%20vt.hbox%3B%0A%09%09if%20%28%21ins%29%20%7B%0A%09%09%09box.parentNode%20%26%26%20box.parentNode.removeChild%28box%29%3B%0A%09%09%09return%3B%0A%09%09%7D%0A%09%09var%20id%20%3D%20this.cust%20%3F%20%22customization-palette-container%22%20%3A%20%22sidebar-box%22%3B%0A%09%09var%20point%20%3D%20document.getElementById%28id%29%3B%0A%09%09point.parentNode.insertBefore%28box%2C%20point%29%3B%0A%09%09var%20mw%20%3D%20function%28%29%20box.style.minWidth%20%3D%20vt.boxObject.width%20+%20%22px%22%3B%0A%09%09mw%28%29%3B%20setTimeout%28mw%2C%20100%29%3B%0A%09%7D%2C%0A%09toggleVT%3A%20function%28on%29%20%7B%0A%09%09var%20vt%20%3D%20this.vt%3B%0A%09%09if%20%28on%20%3D%3D%20undefined%29%20on%20%3D%20%21vt.on%3B%0A%09%09vt.on%20%3D%20on%3B%0A%09%09this.setCollapser%28%21on%29%3B%0A%09%09vt.collapsed%20%3D%20%21on%3B%0A%09%09this.insertBox%28on%29%3B%0A%09%7D%0A%7D%3B%0Avto.init%28%29%3B%0A%0A%0Afunction%20addBackground%28e%29%20%7B%0A%20%20%20setTimeout%28function%28%29%20%7B%0A%20%20%20%20%20%20var%20toolbar%20%3D%20document.getElementById%28%27cb-vt%27%29%3B%0A%20%20%20%20%20%20var%20win%20%3D%20document.getElementById%28%22main-window%22%29%3B%0A%20%20%20%20%20%20%0A%20%20%20%20%20%20var%20image%20%3D%20win.style.backgroundImage%3B%0A%20%20%20%20%20%20if%20%28%20image%20%3D%3D%20%27%27%29%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20toolbar.style.background%20%3D%20%27%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%20%20%20%20%20%20toolbar.style.background%20%3D%20image%3B%0A%20%20%20%20%20%20toolbar.style.backgroundSize%20%3D%20%27auto%20100%25%27%3B%0A%20%20%20%7D%2C%20500%29%3B%0A%7D%3B%0AaddBackground%28%29%3B%20%0AServices.obs.addObserver%28%20addBackground%2C%20%22lightweight-theme-styling-update%22%2C%20false%20%29%3B%0AaddDestructor%28function%28%29%20Services.obs.removeObserver%28%20addBackground%2C%20%22lightweight-theme-styling-update%22%29%20%29%3B%20%0A%0A%0A%0A%0A%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%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

bunda1
Всё равно.Запускаю браузер,панель развёрнута.
Похоже всё таки самая стабильная версия,как по мне,осталась 28-я.Всё работает,ничего не глючит

VORON пишет

bunda1
Всё равно.Запускаю браузер,панель развёрнута.
Похоже всё таки самая стабильная версия,как по мне,осталась 28-я.Всё работает,ничего не глючит

По поводу 28 версии согласен с вами. Насколько много в плане производительности версии 28.0 и 37.0.2 различаются?

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

"код" кнопки
const showSec = true;

//==========================================================
/* dct-style

#digital-clock-text {
    color: #00ddff !important;
    font-weight: bold !important;

}

dct-style */
//==========================================================

const mark = "dct-style";
const init = this.getAttribute("cb-init");
const style = init.substring(
    init.indexOf("/* " + mark) + 3 + mark.length,
    init.lastIndexOf(mark + " */")
).replace(/\n+/g, "\n").replace(/^\n/, "").replace(/\n$/, "");

this.label = showSec ? "00:00:00" : "00:00";

const icon = document.getAnonymousElementByAttribute(this, "class", "toolbarbutton-icon");
icon.style.display = "none";
const text = document.getAnonymousElementByAttribute(this, "class", "toolbarbutton-text");
text.style.display = "block";
text.id = "digital-clock-text";

const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
const cssURI = makeURI("data:text/css," + encodeURIComponent(style));
if (!sss.sheetRegistered(cssURI, sss.USER_SHEET)) sss.loadAndRegisterSheet(cssURI, sss.USER_SHEET);

const format = showSec ? "%H:%M:%S" : "%H:%M";
const timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
function tick() {
    var date = new Date();
//    date.setHours(date.getHours() + 0);
    self.label = date.toLocaleFormat(format)
}
timer.initWithCallback(tick, 1000, timer.TYPE_REPEATING_PRECISE);

this.onmouseenter = function() {
    this.interval = setInterval(function() {
        var date = new Date();
//        date.setHours(date.getHours() + 0);
        var day = date.toLocaleFormat("%A");
        self.tooltipText = date.toLocaleFormat("%d.%m.%Y ") + day[0].toUpperCase() + day.substring(1);
    }, 100)
};
this.onmouseleave = function() clearInterval(this.interval);
this.onDestroy = function(reason) {
    if (reason == "update" || reason == "delete") {
        if (sss.sheetRegistered(cssURI, sss.USER_SHEET)) sss.unregisterSheet(cssURI, sss.USER_SHEET);
    }
    timer.cancel()
};


"инициализация" кнопки
// Автоматически очистить панель поиска после запуска поиска + возврат нужного поисковика, от 19.12.2013. ..............
(function() {
   var func = BrowserSearch.searchBar.handleSearchCommand.toString()
                   .replace(/^\s*function.+{/, '').replace(/}\s*$/, '');   
     
   var code = ['setTimeout(function() { textBox.value = ""; }, 500);\
               \n var searchService = Cc["@mozilla.org/browser/search-service;1"].getService(Ci.nsIBrowserSearchService);\
               \n searchService.currentEngine = searchService.getEngineByName("Яндекс");\
                '].join('');

   func += code;
   BrowserSearch.searchBar.handleSearchCommand = new Function('aEvent', func );
})();

// Показывать потребление памяти в адресной строке, от 28.07.2014. ................................
(function () {
   if ( document.getElementById('memoryDisplay') ) return;
   
   // Создать в адресной строке счётчик памяти ....
   var memoryDisplay = document.createElement("statusbarpanel");
   var urlbarIcons = document.getElementById("urlbar-icons");
   urlbarIcons.insertBefore( memoryDisplay, urlbarIcons.lastChild ); // перед первой иконкой адресной строки
   
   memoryDisplay.id = "memoryDisplay";
   memoryDisplay.label = getMemory() + ' MB'; 
   self.timer = setInterval(function() { memoryDisplay.label = getMemory() + ' MB' }, 2000 ); // таймер обновляет счётчик раз в 2000мс( 2 сек )
   
   
   // Всплывающая подсказка у счётчика отображает заполнение дискового кеша ....
   var k = 100, mb = 1024 * 1024, str = "",
   cs = Cc["@mozilla.org/network/cache-service;1"].getService(Ci.nsICacheService),
   visitor = { visitDevice: addInfo };

   function addInfo(device, info) {
      str += (str ? "\n" : "") + device[0].toUpperCase() + device.slice(1) + " Cache:  " +
      [info.totalSize, info.maximumSize].map(function(num) Math.round(k * num / mb) / k + " MB").join(" / ");
   };

   memoryDisplay.onmouseenter = function() {
     str = "";
     try { cs.visitEntries(visitor) } catch(e) {};
     memoryDisplay.tooltipText = "Л: Подробно показать потребление памяти в вкладке" + "\n\n"
        + ( cbu.getPrefs("browser.cache.memory.enable") || cbu.getPrefs("browser.cache.disk.enable") ? str : "Кэш отключен" );
   };
   
   
   // Получить всю занимаемую оперативную память в MB ....
   function getMemory() {           
      var reporterManager = Cc["@mozilla.org/memory-reporter-manager;1"].getService(Ci.nsIMemoryReporterManager);
      try {
          var e = reporterManager.enumerateReporters();
          while ( e.hasMoreElements() ) {
                  var mr = e.getNext().QueryInterface(Ci.nsIMemoryReporter);
                  self[mr.path] = mr;
                  }
          var memory = self["resident"].amount;
          }
      catch(e) { var memory = reporterManager.resident }; // для Nightly
     
      return ( Math.round( memory/1048576 ) );
   };     
   
   
   // По клику подробно показать потребление памяти в вкладке ....
   memoryDisplay.onclick = function(e) {
      if ( e.button ) return;
       var memoryTab = gBrowser.getBrowserForTab( gBrowser.selectedTab = gBrowser.addTab("about:memory") );
         
       // oбработчик ждет пока откроется "about:memory", удаляет себя и нажимает кнопку на странице
       memoryTab.addEventListener("pageshow", function c(e) {         
          this.removeEventListener( e.type, c );           

          setTimeout(function() { try { e.originalTarget.getElementById('measureButton').click() } catch(e) {} }, 0);     
       }); 
   };
   
     
   // Css стиль для счётчика ....
   var uri = makeURI('data:text/css,'+ encodeURIComponent('\
      #memoryDisplay { -moz-appearance: none !important; margin-left: 2px !important; margin-right: -4px !important; border: 0 !important; min-width: 5.5em; text-align: right; }\
      #memoryDisplay[resetMemory] { color: red !important; }\
   '));
   const sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
   sss.loadAndRegisterSheet(uri, sss.AGENT_SHEET);


   // Удалять счётчик памяти и другие изменения ....
   addDestructor(function() {
      sss.unregisterSheet(uri, sss.AGENT_SHEET);
      urlbarIcons.removeChild( memoryDisplay )
      try { window.clearTimeout( self.timer ) } catch(e) {};
   });
   
})();
try {
    document.getElementById("home-button").setAttribute("onclick", "event.stopPropagation(); if (event.button == '0') { ( (Application.prefs.getValue('browser.startup.homepage', 0)).split('|') ).forEach(function(url) { getBrowser().selectedTab = getBrowser().addTab( url ) }) }");
}
catch(e) { };
// Добавить новый пункт "Перезапуск" в главном меню .....................................................
(function() {
    // блокировать дублирование пункта при открытии настройки панелей
    if ( document.getElementById("restart_firefox") ) return;
   
    var menuItem = document.createElement("menuitem");
    menuItem.setAttribute("id", "restart_firefox");               
    menuItem.setAttribute("label", "Перезапуск");
    menuItem.setAttribute("oncommand", "Application.restart()");   
   
    var QuitItem = document.getElementById("menu_FileQuitItem"); // в меню 'Файл'
    QuitItem.parentNode.insertBefore( menuItem, QuitItem );
   
    var appmenuQuit = document.getElementById("appmenu_quit") || document.getElementById("appmenu-quit"); // в меню kнопки "Firefox"
    if ( appmenuQuit ) appmenuQuit.parentNode.insertBefore( menuItem.cloneNode(true), appmenuQuit );
})();

document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", function(event) {
      if (!event.shiftKey) return;
      if (gContextMenu.onLink && !gContextMenu.onImage){ gContextMenu.saveLink()};
      //...
      if (gContextMenu.onLink && gContextMenu.onImage){ gContextMenu.saveMedia();};
}, false);

/*Initialization Code*/


проблема: тускло выглядит
должно быть: http://puu.sh/huYJl/f6f77caf45.jpg
как есть сейчас: http://puu.sh/htZNM/b378f2887c.jpg

и второй вопрос:
как отключить иконку загрузки ? зеленая и синяя такие
скрин (зеленой) http://puu.sh/htZNM/b378f2887c.jpg
что бы вместо этого, во время загрузки страницы был виден её фавикон (иконка).

29-04-2015 14:44:33

bunda1 пишет

this.style.cssText = "opacity: 1 !important;"; // Css стиль для кнопки

а куда данный стиль запихать ? и в код и в инициализацию пробывал, все равно тускло.

LittleMontana пишет

проблема: тускло выглядит

Такое происходит если в кодах кнопки которые ты положил в вкладку Код или Инициализация есть ошибка. Я проверил на FF38 и всё работает и кнопка выглядит как надо, наверно конфликт с другим кодом или расширением, смотри что пишет консоль ошибок или удаляй коды из своей кнопки по одному и проверяй тусклость.

29-04-2015 20:42:39

LittleMontana пишет
bunda1 пишет

this.style.cssText = "opacity: 1 !important;"; // Css стиль для кнопки

а куда данный стиль запихать ? и в код и в инициализацию пробывал, все равно тускло.

В инициализацию но в данном случае не поможет по выше упомянутым причинам.

29-04-2015 20:47:01

LittleMontana пишет

и второй вопрос:
как отключить иконку загрузки ? зеленая и синяя такие
скрин (зеленой) http://puu.sh/htZNM/b378f2887c.jpg
что бы вместо этого, во время загрузки страницы был виден её фавикон (иконка).

Я не понял о чём речь на твоём изображение не http://puu.sh/htZNM/b378f2887c.jpg не иконка загрузки :/

Извините, не тот скриншот
http://puu.sh/htYUk/fded7f9bad.jpg

LittleMontana пишет

Извините, не тот скриншот
http://puu.sh/htYUk/fded7f9bad.jpg

И где такая иконка загрузки?

bunda1
firefox 37.0.2
вкладки грузятся так...

bunda1
Поправьте, пожалуйста, Autocopy+3 для Nightly, в связи с этим. Она работает, но страшно засоряет консоль с "Deprecated.warning".

Вроде, если заменить getBrowserSelection на getSelection, то перестает ругаться, но текст тогда не мигает при копировании. (С document.commandDispatcher.focusedWindow.getSelection().toString(); и мигает и на "Deprecated" не ругается.)

Спасибо.

turbot пишет

Поправьте, пожалуйста, Autocopy+3 для Nightly ...
Вроде, если заменить getBrowserSelection на getSelection, то перестает ругаться, но текст тогда не мигает при копировании. (С document.commandDispatcher.focusedWindow.getSelection().toString(); и мигает и на "Deprecated" не ругается.)

Приятно когда пользователи находят в кнопках ошибки и сами исправляют:)  А кнопку я подправил, спасибо.

bunda1
:/

скрытый текст
document.commandDispatcher.focusedWindow.getSelection().toString();
e.target.ownerDocument.defaultView.getSelection().toString(); // + e10s

var lastSelection = ... // бесполезно
autocopy.lastSelection = ...

alt

Dumby пишет

e.target.ownerDocument.defaultView.getSelection().toString(); // + e10s
autocopy.lastSelection = ...

Да это работает на + e10s. Спасыбо :beer:

alt
А почему у тебя там removeEventListener для method(type, this, false, gBrowser); ведь CB должен сам удалять обработчика.

bunda1 пишет

А почему у тебя там removeEventListener для method(type, this, false, gBrowser); ведь CB должен сам удалять обработчика.

Да, CB должен сам удалять обработчика.
Но это когда срабатывает деструктор кнопки.
То есть когда кнопка удаляется или пересоздаётся.

А в данном случае имеется в виду совсем другое.
Задумано так: observer следит за изменением настройки «Autocopy».

Если настройка изменилась на true (Autocopy включён),
то добавляются listener'ы на mousedown и mouseup.

А если настройка изменилась на false (Autocopy выключен),
то listener'ы на mousedown и mouseup удаляются,
потому что теперь они не нужны, а только
бессмысленную работу будут делать при каждом клике.

Dumby
Понятно, я сам наверно мог догадаться. Спасибо.

Как сделать кнопку для вызова настроек  дополнения friGate, чтобы при клике появлялось окошко

скрытый текст
2015-05-07_181516.png

manuk
Есть кнопка-меню вызова настроек для всех плугов у кот. есть настройки.

Кнопка быстрого вызова настроек расширений. URl

Выделить код

Код:

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%3E%u0411%u044B%u0441%u0442%u0440%u044B%u0439%20%u0434%u043E%u0441%u0442%u0443%u043F%20%u043A%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%u043C%20%u0440%u0430%u0441%u0448%u0438%u0440%u0435%u043D%u0438%u0439%20%5BExtensions%20Options%20Menu%5D%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABVUlEQVQ4y2P4//8/AyWYoALpQsb9ftPM/4tnM+4nywCQ5s5jRf8d+7T+k2VAxHzH/TUHkv57TDMgzgWyJYz74xZ6/E9Y4vU/ZaXv/9Jd0f/LDkb+j13v8N9xmtp/oy6J/xqN/P+5Ihj2YzUApHnxtb7/My83/e8+W/C/9nj8//yD/v+T99j/D99u8N9nk/J/h9Vi/+Vq2P5jNQBkMz7NTuvE/1ut5v0vV8+M3QCQs3Fptlsh+l93Ktd/pTaW/wKpjAgDYFEFCjCQn3HZDNLME8tYANLDEcrgADcAFlWg0AYFGC5nK3ew/McaC6BEAopnUFSBQhubZpMVbP81JrFgdwEyBkUVup9BNoM0681hBdMYYYCMQfGMzc8gGqQZ5BIQxhkLoEQCimeQs0E2IcuB+CDNxkvZ/ktX4jAAlMJAiQRkA8iZML+CaBAfJA7SDOTvJyovEMIAruB4gKjNkYMAAAAASUVORK5CYII%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5B/*%0A%20*%20%20This%20Source%20Code%20Form%20is%20subject%20to%20the%20terms%20of%20the%20Mozilla%20Public%0A%20*%20%20License%2C%20v.%202.0.%20If%20a%20copy%20of%20the%20MPL%20was%20not%20distributed%20with%20this%0A%20*%20%20file%2C%20You%20can%20obtain%20one%20at%20http%3A//mozilla.org/MPL/2.0/.%0A%20*/%0A%0Afunction%20%24%28aId%29%20%7B%0A%20%20return%20document.getElementById%28aId%29%3B%0A%7D%0A%0Afunction%20%24xml%28aXML%29%20%7B%0A%20%20return%20%28new%20DOMParser%29.parseFromString%28aXML%2C%20%22application/xml%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.documentElement%3B%0A%7D%0A%0Afunction%20sort%28aArray%29%20%7B%0A%20%20aArray.sort%28function%28a%2C%20b%29%20%7B%0A%20%20%20%20a%20%3D%20a.name.toLowerCase%28%29%3B%0A%20%20%20%20b%20%3D%20b.name.toLowerCase%28%29%3B%0A%20%20%20%20if%20%28a%20%3C%20b%29%20return%20-1%3B%0A%20%20%20%20if%20%28a%20%3E%20b%29%20return%201%3B%0A%20%20%20%20return%200%3B%0A%20%20%7D%29%0A%7D%0A%0Afunction%20openAM%28aView%29%20%7B%0A%20%20if%20%28%22toEM%22%20in%20window%29%20%7B%0A%20%20%20%20toEM%28aView%29%3B%0A%20%20%7D%20else%20if%20%28%22openAddonsMgr%22%20in%20window%29%20%7B%0A%20%20%20%20openAddonsMgr%28aView%29%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20BrowserOpenAddonsMgr%28aView%29%3B%0A%20%20%7D%0A%7D%0A%0Athis.openOption%20%3D%20function%28aId%29%20%7B%0A%20%20AddonManager.getAddonByID%28aId%2C%20function%28aAddon%29%20%7B%0A%20%20%20%20if%20%28aAddon.optionsType%20%26%26%20%28parseInt%28aAddon.optionsType%29%20%3E%201%29%29%20%7B%0A%20%20%20%20%20%20switch%20%28parseInt%28aAddon.optionsType%29%29%20%7B%0A%20%20%20%20%20%20%20%20case%203%3A%0A%20%20%20%20%20%20%20%20%20%20switchToTabHavingURI%28aAddon.optionsURL%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20break%3B%0A%20%20%20%20%20%20%20%20case%202%3A%0A%20%20%20%20%20%20%20%20%20%20openAM%28%22addons%3A//detail/%22%20+%20encodeURIComponent%28aAddon.id%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20+%20%22/preferences%22%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20openDialog%28aAddon.optionsURL%2C%20%22%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22chrome%2C%20dialog%2C%20close%2C%20minimizable%2C%20%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22titlebar%2C%20toolbar%2C%20scrollbars%2C%20centerscreen%22%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%29%0A%7D%0A%0Athis.setStatus%20%3D%20function%28aString%29%20%7B%0A%20%20XULBrowserWindow.setOverLink%28aString%29%3B%0A%7D%0A%0Athis.onclick%20%3D%20function%20inspectExtensions%28aEvent%29%20%7B%0A%20%20switch%20%28aEvent.button%29%20%7B%0A%20%20%20%20case%200%3A%0A%20%20%20%20%20%20if%20%28aEvent.ctrlKey%29%20%7B%0A%20%20%20%20%20%20%20%20aEvent.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20if%20%28typeof%20inspectObject%20%21%3D%20%22function%22%29%20return%3B%0A%20%20%20%20%20%20%20%20AddonManager.getAllAddons%28function%28aAddons%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20extensions%20%3D%20%5B%5D%3B%0A%20%20%20%20%20%20%20%20%20%20aAddons.forEach%28function%28aAddon%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20%28aAddon.type%20%3D%3D%20%22extension%22%20%26%26%20aAddon.isActive%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20extensions.push%28aAddon%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%7D%29%0A%20%20%20%20%20%20%20%20%20%20sort%28extensions%29%3B%0A%20%20%20%20%20%20%20%20%20%20inspectObject%28extensions%29%3B%0A%20%20%20%20%20%20%20%20%7D%29%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20break%3B%0A%0A%20%20%20%20case%201%3A%0A%20%20%20%20%20%20var%20prefs%20%3D%20Services.prefs.getBranch%28%22custombuttons.searchAddons%22%20+%20%22.%22%29%3B%0A%20%20%20%20%20%20var%20text%20%3D%20%22%22%3B%0A%20%20%20%20%20%20try%20%7B%0A%20%20%20%20%20%20%20%20text%20%3D%20prefs.getCharPref%28%22search%22%29%3B%0A%20%20%20%20%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20var%20query%20%3D%20custombuttons.promptBox%28%22Search%20add-ons%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Enter%20add-on%20name%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%2C%20null%29%3B%0A%20%20%20%20%20%20if%20%28%21query%5B0%5D%29%20return%3B%0A%20%20%20%20%20%20prefs.setCharPref%28%22search%22%2C%20query%5B1%5D%29%3B%0A%20%20%20%20%20%20openAM%28%22addons%3A//search/%22%20+%20encodeURIComponent%28query%5B1%5D%29%29%3B%0A%0A%20%20%20%20default%3A%0A%20%20%7D%0A%7D%0A%0Athis.addonsMgr%20%3D%20function%28aPopup%2C%20aCallback%29%20%7B%0A%20%20AddonManager.getAllAddons%28function%28aAddons%29%20%7B%0A%20%20%20%20var%20extensions%20%3D%20%5B%5D%3B%0A%20%20%20%20aAddons.forEach%28function%28aAddon%29%20%7B%0A%20%20%20%20%20%20/*aAddon.toString%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%22use%20strict%22%3B%0A%20%20%20%20%20%20%20%20return%20this.name%3B%0A%20%20%20%20%20%20%7D*/%0A%20%20%20%20%20%20if%20%28%28aAddon.type%20%3D%3D%20%22extension%22%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20%28aAddon.optionsURL%20%21%3D%20null%29%20%26%26%0A%20%20%20%20%20%20%20%20%20%20aAddon.isActive%29%20%7B%0A%20%20%20%20%20%20%20%20extensions.push%28aAddon%29%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%29%0A%20%20%20%20sort%28extensions%29%3B%0A%20%20%20%20aCallback%28aPopup%2C%20extensions%29%3B%0A%20%20%7D%29%0A%7D%0A%0Afunction%20getExtensionObject%28aId%2C%20aCallback%29%20%7B%0A%20%20AddonManager.getAllAddons%28function%28aAddons%29%20%7B%0A%20%20%20%20aAddons.forEach%28function%28aAddon%29%20%7B%0A%20%20%20%20%20%20if%20%28aAddon.id%20%3D%3D%20aId%29%20%7B%0A%20%20%20%20%20%20%20%20aCallback%28aAddon%29%3B%0A%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%29%0A%20%20%7D%29%0A%7D%0A%0Afunction%20htmlEntities%28aString%29%20%7B%0A%20%20return%20aString.replace%28/%26/g%2C%20%22%26amp%3B%22%29.replace%28/%3C/g%2C%20%22%26lt%3B%22%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.replace%28/%3E/g%2C%20%22%26gt%3B%22%29.replace%28/%22/g%2C%20%22%26quot%3B%22%29%3B%0A%7D%0A%0Afunction%20addItem%28aNode%2C%20aId%2C%20aLabel%2C%20aURL%2C%20aIcon%2C%20aHomePage%2C%20aDesc%29%20%7B%0A%20%20let%20mi%20%3D%20aNode.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0A%20%20%20%20%20%20mi.setAttribute%28%22GUID%22%2C%20aId%29%3B%0A%20%20%20%20%20%20mi.className%20%3D%20%22menuitem-iconic%22%3B%0A%20%20%20%20%20%20mi.setAttribute%28%22label%22%2C%20aLabel%29%3B%0A%20%20%20%20%20%20mi.statusText%20%3D%20aURL%3B%0A%20%20%20%20%20%20mi.setAttribute%28%22image%22%2C%20aIcon%29%3B%0A%20%20%20%20%20%20mi.setAttribute%28%22homepage%22%2C%20aHomePage%29%3B%0A%20%20%20%20%20%20mi.tooltipText%20%3D%20aDesc%3B%0A%7D%0A%0Athis.populate%20%3D%20function%28aPopup%2C%20aExtensions%29%20%7B%0A%20%20while%20%28aPopup.lastChild%29%20aPopup.removeChild%28aPopup.lastChild%29%3B%0A%20%20if%20%28%28navigator.platform%20%3D%3D%20%22Win32%22%29%20%26%26%20%28aExtensions.length%20%3E%2020%29%29%20%7B%0A%20%20%20%20var%20hbox%20%20%3D%20aPopup.appendChild%28document.createElement%28%22hbox%22%29%29%3B%0A%20%20%20%20var%20vbox1%20%3D%20hbox.appendChild%28document.createElement%28%22vbox%22%29%29%3B%0A%20%20%20%20var%20vbox2%20%3D%20hbox.appendChild%28document.createElement%28%22vbox%22%29%29%3B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20aExtensions.length%3B%20i++%29%20%7B%0A%20%20%20%20%20%20let%20vbox%20%3D%20%28i%20%3C%20parseInt%28aExtensions.length%20/%202%29%29%20%3F%20vbox1%20%3A%20vbox2%3B%0A%20%20%20%20%20%20let%20ext%20%3D%20aExtensions%5Bi%5D%3B%0A%20%20%20%20%20%20addItem%28vbox%2C%20ext.id%2C%20ext.name%20+%20%22%20%22%20+%20ext.version%2C%20ext.optionsURL%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%28ext.iconURL%20%3F%20ext.iconURL%20%3A%20%22chrome%3A//mozapps/skin/extensions/extensionGeneric-16.png%22%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%28ext.homepageURL%20%3F%20ext.homepageURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20ext.reviewURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20ext.reviewURL.replace%28/%5C/reviews/%2C%20%22%22%29.toString%28%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22http%3A//www.google.com/search%3Fq%3D%22%20+%20ext.name%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ext.description%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%20else%20%7B%0A%20%20%20%20for%20%28var%20i%20%3D%200%3B%20i%20%3C%20aExtensions.length%3B%20i++%29%20%7B%0A%20%20%20%20%20%20let%20ext%20%3D%20aExtensions%5Bi%5D%3B%0A%20%20%20%20%20%20addItem%28aPopup%2C%20ext.id%2C%20ext.name%20+%20%22%20%22%20+%20ext.version%2C%20ext.optionsURL%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%28ext.iconURL%20%3F%20ext.iconURL%20%3A%20%22chrome%3A//mozapps/skin/extensions/extensionGeneric-16.png%22%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%28ext.homepageURL%20%3F%20ext.homepageURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20ext.reviewURL%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3F%20ext.reviewURL.replace%28/%5C/reviews/%2C%20%22%22%29.toString%28%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3A%20%22http%3A//www.google.com/search%3Fq%3D%22%20+%20ext.name%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ext.description%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%7D%0A%0Avar%20popup%20%3D%20document.createElement%28%22menupopup%22%29%3B%0Apopup.setAttribute%28%22context%22%2C%20%22cb-extensions-menu%22%29%3B%0Apopup.setAttribute%28%22oncommand%22%2C%20%22event.stopPropagation%28%29%3B%20%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22this.parentNode.openOption%28%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22event.target.getAttribute%28%27GUID%27%29%29%3B%22%29%3B%0Apopup.setAttribute%28%22onmouseover%22%2C%20%22this.parentNode.setStatus%28%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22event.target.statusText%29%3B%22%29%3B%0Apopup.setAttribute%28%22onmouseout%22%2C%20%22this.parentNode.setStatus%28%27%27%29%3B%22%29%3B%0Apopup.setAttribute%28%22onpopupshowing%22%2C%20%22this.parentNode.addonsMgr%28%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22this%2C%20this.parentNode.populate%29%3B%22%29%3B%0A%0A//this.addonsMgr%28popup%2C%20this.populate%29%3B%0A%0Athis.appendChild%28popup%29%3B%0Athis.type%20%3D%20%22menu%22%3B%0A%0A//---------------------------------%0A%0Athis.copyId%20%3D%20function%28aId%29%20%7B%0A%20%20Cc%5B%22@mozilla.org/widget/clipboardhelper%3B1%22%5D.%0A%20%20getService%28Ci.nsIClipboardHelper%29.copyString%28aId%29%3B%0A%7D%0A%0Athis.goHome%20%3D%20function%28aURL%29%20%7B%0A%20%20gBrowser.loadOneTab%28aURL%29%3B%0A%7D%0A%0Athis.inspect%20%3D%20function%28aId%29%20%7B%0A%20%20getExtensionObject%28aId%2C%20inspectObject%29%3B%0A%7D%0A%0Athis.explore%20%3D%20function%28aId%29%20%7B%0A%20%20var%20dir%20%3D%20Services.dirsvc.get%28%22ProfD%22%2C%20Ci.nsIFile%29%3B%0A%20%20dir.append%28%22extensions%22%29%3B%0A%20%20dir.append%28aId%29%3B%0A%20%20var%20nsLocalFile%20%3D%20Components.Constructor%28%22@mozilla.org/file/local%3B1%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22nsILocalFile%22%2C%20%22initWithPath%22%29%3B%0A%20%20%28new%20nsLocalFile%28dir.path%20+%20%28dir.exists%28%29%20%3F%20%22%22%20%3A%20%22.xpi%22%29%29%29.reveal%28%29%3B%0A%7D%0A%0Aif%20%28%24%28%22cb-extensions-menu%22%29%29%20%7B%0A%20%20%24%28%22cb-extensions-menu%22%29.parentNode.removeChild%28%24%28%22cb-extensions-menu%22%29%29%3B%0A%7D%0A%0Athis.checkForDOMI%20%3D%20function%28aEvent%29%20%7B%0A%20%20if%20%28typeof%20inspectObject%20%21%3D%20%22function%22%29%20%7B%0A%20%20%20%20aEvent.target.getElementsByTagName%28%22menuitem%22%29%5B2%5D.hidden%20%3D%20true%3B%0A%20%20%7D%0A%7D%0A%0Avar%20popupset%20%3D%20document.getElementById%28%22mainPopupSet%22%29%3B%0Avar%20context%20%3D%20popupset.appendChild%28%24xml%28%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27%3Cmenupopup%20xmlns%3D%22%27%20+%20xulns%20+%20%27%22%20id%3D%22cb-extensions-menu%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27onclick%3D%22event.stopPropagation%28%29%3B%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27onpopupshowing%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.checkForDOMI%28event%29%3B%22%3E%3Cmenuitem%20label%3D%22Visit%20Home%20Page%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27onmouseover%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.setStatus%28document.popupNode.getAttribute%28%5C%27homepage%5C%27%29%29%3B%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27onmouseout%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.setStatus%28%5C%27%5C%27%29%3B%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27oncommand%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.goHome%28document.popupNode.getAttribute%28%5C%27homepage%5C%27%29%29%3B%22/%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%3Cmenuitem%20label%3D%22Copy%20GUID%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27onmouseover%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.setStatus%28document.popupNode.getAttribute%28%5C%27GUID%5C%27%29%29%3B%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27onmouseout%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.setStatus%28%5C%27%5C%27%29%3B%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27oncommand%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.copyId%28document.popupNode.getAttribute%28%5C%27GUID%5C%27%29%29%3B%22/%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%3Cmenuitem%20label%3D%22Inspect%20Extension%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27onmouseover%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.setStatus%28document.popupNode.getAttribute%28%5C%27GUID%5C%27%29%29%3B%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27onmouseout%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.setStatus%28%5C%27%5C%27%29%3B%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27oncommand%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.inspect%28document.popupNode.getAttribute%28%5C%27GUID%5C%27%29%29%3B%22/%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%3Cmenuitem%20label%3D%22Browse%20Install%20Directory%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27onmouseover%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.setStatus%28document.popupNode.getAttribute%28%5C%27GUID%5C%27%29%29%3B%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27onmouseout%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.setStatus%28%5C%27%5C%27%29%3B%22%20%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27oncommand%3D%22document.getElementById%28%5C%27%27%20+%20this.id%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%5C%27%29.explore%28document.popupNode.getAttribute%28%5C%27GUID%5C%27%29%29%3B%22/%3E%27%0A%20%20%20%20%20%20%20%20%20%20%20%20+%20%27%3C/menupopup%3E%27%29%29%3B%0A%0A%0A/*%0A//%20%u0441%u043A%u0440%u044B%u0442%u0438%u0435%20%u0434%u0440%u043E%u043F%u043C%u0430%u0440%u043A%u0435%u0440%u0430%20%u0443%20%u043A%u043D%u043E%u043F%u043A%u0438-%u043C%u0435%u043D%u044E%28%u0432%20%u0438%u043D%u0438%u0446%u0438%u0430%u043B%u0438%u0437%u0430%u0446%u0438%u044E%29%0Avar%20that%20%3D%20this%3B%0Athis.hideDropMarker%20%3D%20function%28%29%20%7B%0A%20%20var%20dropMarker%20%3D%20document.getAnonymousElementByAttribute%28that%2C%20%22class%22%2C%20%22toolbarbutton-menu-dropmarker%22%29%3B%0A%20%20if%20%28dropMarker%29%20%7B%0A%20%20%20%20dropMarker.setAttribute%28%22hidden%22%2C%20%22true%22%29%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20setTimeout%28that.hideDropMarker%2C%2010%29%3B%0A%20%20%7D%0A%7D%0Athis.hideDropMarker%28%29%3B%0A*/%0A%0A//%20%u041F%u043E%u0434%u0441%u043A%u0430%u0437%u043A%u0430%20%u0434%u043B%u044F%20%u043A%u043D%u043E%u043F%u043A%u0438%20..........%20%0Athis.tooltipText%20%3D%20this.Help%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%u0411%u044B%u0441%u0442%u0440%u044B%u0439%20%u0434%u043E%u0441%u0442%u0443%u043F%20%u043A%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0430%u043C%20%u0440%u0430%u0441%u0448%u0438%u0440%u0435%u043D%u0438%u0439%20%u0443%20%u043A%u043E%u0442%u043E%u0440%u044B%u0445%20%u0435%u0441%u0442%u044C%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%0A---------------------------------------------------------------%0A%u041B%u041A%u041C%20-%20%u0432%u044B%u0437%u043E%u0432%u0435%u0442%20%u043E%u043A%u043D%u043E%20%u043D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%20%u0440%u0430%u0441%u0448%u0438%u0440%u0435%u043D%u0438%u044F.%0A%u0421%u041A%u041C%20-%20%u043F%u043E%u0438%u0441%u043A%20%u0440%u0430%u0441%u0448%u0438%u0440%u0435%u043D%u0438%u0439.%0A%0A%0A%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E


Кнопка быстрого вызова настроек расширений. Инициализация

Выделить код

Код:

/*
 *  This Source Code Form is subject to the terms of the Mozilla Public
 *  License, v. 2.0. If a copy of the MPL was not distributed with this
 *  file, You can obtain one at http://mozilla.org/MPL/2.0/.
 */

function $(aId) {
  return document.getElementById(aId);
}

function $xml(aXML) {
  return (new DOMParser).parseFromString(aXML, "application/xml")
                        .documentElement;
}

function sort(aArray) {
  aArray.sort(function(a, b) {
    a = a.name.toLowerCase();
    b = b.name.toLowerCase();
    if (a < b) return -1;
    if (a > b) return 1;
    return 0;
  })
}

function openAM(aView) {
  if ("toEM" in window) {
    toEM(aView);
  } else if ("openAddonsMgr" in window) {
    openAddonsMgr(aView);
  } else {
    BrowserOpenAddonsMgr(aView);
  }
}

this.openOption = function(aId) {
  AddonManager.getAddonByID(aId, function(aAddon) {
    if (aAddon.optionsType && (parseInt(aAddon.optionsType) > 1)) {
      switch (parseInt(aAddon.optionsType)) {
        case 3:
          switchToTabHavingURI(aAddon.optionsURL, true);
          break;
        case 2:
          openAM("addons://detail/" + encodeURIComponent(aAddon.id)
                                    + "/preferences");
      }
    } else {
      openDialog(aAddon.optionsURL, "",
                 "chrome, dialog, close, minimizable, " +
                 "titlebar, toolbar, scrollbars, centerscreen");
    }
  })
}

this.setStatus = function(aString) {
  XULBrowserWindow.setOverLink(aString);
}

this.onclick = function inspectExtensions(aEvent) {
  switch (aEvent.button) {
    case 0:
      if (aEvent.ctrlKey) {
        aEvent.preventDefault();
        if (typeof inspectObject != "function") return;
        AddonManager.getAllAddons(function(aAddons) {
          var extensions = [];
          aAddons.forEach(function(aAddon) {
            if (aAddon.type == "extension" && aAddon.isActive) {
              extensions.push(aAddon);
            }
          })
          sort(extensions);
          inspectObject(extensions);
        })
      }
      break;

    case 1:
      var prefs = Services.prefs.getBranch("custombuttons.searchAddons" + ".");
      var text = "";
      try {
        text = prefs.getCharPref("search");
      } catch(ex) {
      }
      var query = custombuttons.promptBox("Search add-ons",
                                          "Enter add-on name",
                                          text, null);
      if (!query[0]) return;
      prefs.setCharPref("search", query[1]);
      openAM("addons://search/" + encodeURIComponent(query[1]));

    default:
  }
}

this.addonsMgr = function(aPopup, aCallback) {
  AddonManager.getAllAddons(function(aAddons) {
    var extensions = [];
    aAddons.forEach(function(aAddon) {
      /*aAddon.toString = function() {
        "use strict";
        return this.name;
      }*/
      if ((aAddon.type == "extension") &&
          (aAddon.optionsURL != null) &&
          aAddon.isActive) {
        extensions.push(aAddon);
      }
    })
    sort(extensions);
    aCallback(aPopup, extensions);
  })
}

function getExtensionObject(aId, aCallback) {
  AddonManager.getAllAddons(function(aAddons) {
    aAddons.forEach(function(aAddon) {
      if (aAddon.id == aId) {
        aCallback(aAddon);
        return;
      }
    })
  })
}

function htmlEntities(aString) {
  return aString.replace(/&/g, "&amp;").replace(/</g, "&lt;")
                .replace(/>/g, "&gt;").replace(/"/g, "&quot;");
}

function addItem(aNode, aId, aLabel, aURL, aIcon, aHomePage, aDesc) {
  let mi = aNode.appendChild(document.createElement("menuitem"));
      mi.setAttribute("GUID", aId);
      mi.className = "menuitem-iconic";
      mi.setAttribute("label", aLabel);
      mi.statusText = aURL;
      mi.setAttribute("image", aIcon);
      mi.setAttribute("homepage", aHomePage);
      mi.tooltipText = aDesc;
}

this.populate = function(aPopup, aExtensions) {
  while (aPopup.lastChild) aPopup.removeChild(aPopup.lastChild);
  if ((navigator.platform == "Win32") && (aExtensions.length > 20)) {
    var hbox  = aPopup.appendChild(document.createElement("hbox"));
    var vbox1 = hbox.appendChild(document.createElement("vbox"));
    var vbox2 = hbox.appendChild(document.createElement("vbox"));
    for (var i = 0; i < aExtensions.length; i++) {
      let vbox = (i < parseInt(aExtensions.length / 2)) ? vbox1 : vbox2;
      let ext = aExtensions[i];
      addItem(vbox, ext.id, ext.name + " " + ext.version, ext.optionsURL,
                      (ext.iconURL ? ext.iconURL : "chrome://mozapps/skin/extensions/extensionGeneric-16.png"),
                      (ext.homepageURL ? ext.homepageURL
                                       : ext.reviewURL
                                         ? ext.reviewURL.replace(/\/reviews/, "").toString()
                                         : "http://www.google.com/search?q=" + ext.name),
                      ext.description);
    }
  } else {
    for (var i = 0; i < aExtensions.length; i++) {
      let ext = aExtensions[i];
      addItem(aPopup, ext.id, ext.name + " " + ext.version, ext.optionsURL,
                      (ext.iconURL ? ext.iconURL : "chrome://mozapps/skin/extensions/extensionGeneric-16.png"),
                      (ext.homepageURL ? ext.homepageURL
                                       : ext.reviewURL
                                         ? ext.reviewURL.replace(/\/reviews/, "").toString()
                                         : "http://www.google.com/search?q=" + ext.name),
                      ext.description);
    }
  }
}

var popup = document.createElement("menupopup");
popup.setAttribute("context", "cb-extensions-menu");
popup.setAttribute("oncommand", "event.stopPropagation(); " +
                   "this.parentNode.openOption(" +
                   "event.target.getAttribute('GUID'));");
popup.setAttribute("onmouseover", "this.parentNode.setStatus(" +
                   "event.target.statusText);");
popup.setAttribute("onmouseout", "this.parentNode.setStatus('');");
popup.setAttribute("onpopupshowing", "this.parentNode.addonsMgr(" +
                   "this, this.parentNode.populate);");

//this.addonsMgr(popup, this.populate);

this.appendChild(popup);
this.type = "menu";

//---------------------------------

this.copyId = function(aId) {
  Cc["@mozilla.org/widget/clipboardhelper;1"].
  getService(Ci.nsIClipboardHelper).copyString(aId);
}

this.goHome = function(aURL) {
  gBrowser.loadOneTab(aURL);
}

this.inspect = function(aId) {
  getExtensionObject(aId, inspectObject);
}

this.explore = function(aId) {
  var dir = Services.dirsvc.get("ProfD", Ci.nsIFile);
  dir.append("extensions");
  dir.append(aId);
  var nsLocalFile = Components.Constructor("@mozilla.org/file/local;1",
                                           "nsILocalFile", "initWithPath");
  (new nsLocalFile(dir.path + (dir.exists() ? "" : ".xpi"))).reveal();
}

if ($("cb-extensions-menu")) {
  $("cb-extensions-menu").parentNode.removeChild($("cb-extensions-menu"));
}

this.checkForDOMI = function(aEvent) {
  if (typeof inspectObject != "function") {
    aEvent.target.getElementsByTagName("menuitem")[2].hidden = true;
  }
}

var popupset = document.getElementById("mainPopupSet");
var context = popupset.appendChild($xml(
              '<menupopup xmlns="' + xulns + '" id="cb-extensions-menu" '
            + 'onclick="event.stopPropagation();" '
            + 'onpopupshowing="document.getElementById(\'' + this.id
            + '\').checkForDOMI(event);"><menuitem label="Visit Home Page" '
            + 'onmouseover="document.getElementById(\'' + this.id
            + '\').setStatus(document.popupNode.getAttribute(\'homepage\'));" '
            + 'onmouseout="document.getElementById(\'' + this.id
            + '\').setStatus(\'\');" '
            + 'oncommand="document.getElementById(\'' + this.id
            + '\').goHome(document.popupNode.getAttribute(\'homepage\'));"/>'
            + '<menuitem label="Copy GUID" '
            + 'onmouseover="document.getElementById(\'' + this.id
            + '\').setStatus(document.popupNode.getAttribute(\'GUID\'));" '
            + 'onmouseout="document.getElementById(\'' + this.id
            + '\').setStatus(\'\');" '
            + 'oncommand="document.getElementById(\'' + this.id
            + '\').copyId(document.popupNode.getAttribute(\'GUID\'));"/>'
            + '<menuitem label="Inspect Extension" '
            + 'onmouseover="document.getElementById(\'' + this.id
            + '\').setStatus(document.popupNode.getAttribute(\'GUID\'));" '
            + 'onmouseout="document.getElementById(\'' + this.id
            + '\').setStatus(\'\');" '
            + 'oncommand="document.getElementById(\'' + this.id
            + '\').inspect(document.popupNode.getAttribute(\'GUID\'));"/>'
            + '<menuitem label="Browse Install Directory" '
            + 'onmouseover="document.getElementById(\'' + this.id
            + '\').setStatus(document.popupNode.getAttribute(\'GUID\'));" '
            + 'onmouseout="document.getElementById(\'' + this.id
            + '\').setStatus(\'\');" '
            + 'oncommand="document.getElementById(\'' + this.id
            + '\').explore(document.popupNode.getAttribute(\'GUID\'));"/>'
            + '</menupopup>'));


/*
// скрытие дропмаркера у кнопки-меню(в инициализацию)
var that = this;
this.hideDropMarker = function() {
  var dropMarker = document.getAnonymousElementByAttribute(that, "class", "toolbarbutton-menu-dropmarker");
  if (dropMarker) {
    dropMarker.setAttribute("hidden", "true");
  } else {
    setTimeout(that.hideDropMarker, 10);
  }
}
this.hideDropMarker();
*/

// Подсказка для кнопки .......... 
// this.tooltipText = this.Help

HaGEN, тоже 3 клика... Хочется один. Может bunda1 попросить...

manuk пишет

HaGEN, тоже 3 клика... Хочется один. Может bunda1 попросить...

Выделить код

Код:

openDialog("chrome://frigate2/content/pref.xul", "", "chrome, dialog, close, minimizable, " + "titlebar, toolbar, scrollbars, centerscreen");

08-05-2015 18:28:13
Или так - будет отрываться только одно окошко настроек friGate с возможностью закрыть настройки friGate по клику на странице:

Выделить код

Код:

var windows = Cc['@mozilla.org/appshell/window-mediator;1'].getService(Ci.nsIWindowMediator).getEnumerator(null);
while( windows.hasMoreElements() ) {
       var win = windows.getNext();
       if ( win.name == 'friGate') {    
            win.focus();
            return;
            }
       };   
var options = openDialog("chrome://frigate2/content/pref.xul", "friGate", "chrome, dialog, close, minimizable, " + "titlebar, toolbar, scrollbars, centerscreen");
   
gBrowser.addEventListener("click", function c() {
   this.removeEventListener("click", c );
   try { options.close() } catch(e) {}; 
}, true );

bunda1, спасибо. Я в тебя верил. А сразу открывать на второй вкладке настроек (как на картинке под спойлером https://forum.mozilla-russia.org/viewto … 82#p682282) возможно? Ещё минус один клик... Или проще friGate переделать?

manuk пишет

bunda1, спасибо. Я в тебя верил. А сразу открывать на второй вкладке настроек (как на картинке под спойлером https://forum.mozilla-russia.org/viewto … 82#p682282) возможно? Ещё минус один клик... Или проще friGate переделать?

Выделить код

Код:

var windows = Cc['@mozilla.org/appshell/window-mediator;1'].getService(Ci.nsIWindowMediator).getEnumerator(null);
while( windows.hasMoreElements() ) {
       var win = windows.getNext();
       if ( win.name == 'friGate') {    
            win.focus();
            return;
            }
       };   
var options = openDialog("chrome://frigate2/content/pref.xul", "friGate", "chrome, dialog, close, minimizable, " + "titlebar, toolbar, scrollbars, centerscreen");
   
gBrowser.addEventListener("click", function c() {
   this.removeEventListener("click", c );
   try { options.close() } catch(e) {}; 
}, true );

options.addEventListener("load", function s(e) {
   this.removeEventListener(e.type, s);
   e.target.getElementsByAttribute("label", "Proxys")[0].click();
}, true )

bunda1, открывает на вкладке "Основное". Может ещё подаманишь?

manuk пишет

bunda1, открывает на вкладке "Основное". Может ещё подаманишь?

Упс, у меня настройки friGate на английском а код находит вкладку настроек по названию, поменяй в коде Proxys на Прокси

bunda1, всё прекрасно. Огромное спасибо!

Установлена кнопка CB Mouse Gestures+, сделал команду 'DR':{name:'Обновить',cmd:function(){ gBrowser.reload() }},
а как сделать чтоб обновлялось не как по F5, а как по ctrl+F5?

Mishania пишет

Установлена кнопка CB Mouse Gestures+, сделал команду 'DR':{name:'Обновить',cmd:function(){ gBrowser.reload() }},
а как сделать чтоб обновлялось не как по F5, а как по ctrl+F5?

Может:

Выделить код

Код:

BrowserReloadSkipCache();

bunda1
И как всегда большое человеческое спасибо.

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

Stakhovsky пишет

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

А контекстное меню где должно открываться?

bunda1 пишет

Stakhovsky пишет: Здравствуйте, подскажите если есть кнопка добавить ссылку в контекстное меню, желательно с иконкой, без подменю, что бы сразу, хочу добавить ссылки на несколько постоянно посещаемых сайтов. Спасибо.А контекстное меню где должно открываться?

При клике в любом пустом месте любой страницы.

Stakhovsky
Ну тогда такой кнопки нет, есть такие что добавляют в меню кнопки. Можно же просто в закладки добавлять.

bunda1 пишет

StakhovskyНу тогда такой кнопки нет, есть такие что добавляют в меню кнопки. Можно же просто в закладки добавлять.

Ясно, я пересмотрел уже все дополнения, вот нашел одно которое выполняет такую функцию (https://addons.mozilla.org/ru/firefox/addon/quick-tab), но там можно только одну ссылку указать. Вы бы не могли помочь если можно как то сделать из него кнопки в контекстное меню или что бы это дополнение модернизировать добавив еще пункты, или может как-то сделать что бы установить несколько таких дополнений переименовав их. Помогите пожалуйста.

Stakhovsky
А зачем сылки в контекстное меню не удобно же.

bunda1 пишет

StakhovskyА зачем сылки в контекстное меню не удобно же.

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

okkamas_knife пишет

ну а кто мешает сделать? при нынешнем количестве примеров да ещё с комментариями даже при полном незнании javascript только копипастой и методом тыка за час вполне реально сделать такую кнопку.на то они и кастомные - настраиваешь под себя.ну а если лень то https://addons.mozilla.org/ru/firefox/search/?q=context&cat=allтам есть на первой же странице расширение добавляюще меню закладок в контекстное меню.. думаю если полистать то и просто ссылки найдутся..

Никто не мешает, я и пытаюсь сделать, список поиска дополнений по контекстным меню я перелопатил весь, такого как я говорю нет, мне бы было естественно легче найти готовое, чем писать на форум.

Stakhovsky
Есть кнопка "Ext menu" в разделе "Кнопки для Firefox". Посмотрите здесь.

okkamas_knife пишет

ну так в чем проблема то?открываем раздел СВ на форуме там кнопок работающих с контекстным меню целая куча, подбираем подходящую попроще и заменяем в ней действие на открытие страницы (примеры есть и готовых кнопках и в инструментах)ну а если не заработает то тогда можно и привести свой код и спросить ЧЯДНТ и тут подскажут где ошибка.
                    Отредактировано okkamas_knife (Сегодня 02:26:48)

Спасибо, буду пробовать. Как думаете не проще будет переделать это дополнение? https://addons.mozilla.org/ru/firefox/addon/quick-tab/

13-05-2015 01:38:57

xrun1 пишет

StakhovskyЕсть кнопка "Ext menu" в разделе "Кнопки для Firefox". Посмотрите здесь.

Спасибо, то что нужно.

okkamas_knife пишет

Stakhovsky пишет: Как думаете не проще будет переделать это дополнение? http://addons.mozilla.org/ru/firefox/addon/quick-tab/ну так если устраивает открытие страницы по хоткеюто вообще всё решается кнопкой с одной строчкой открывающей страницу, просто в настройках кнопки указать хоткей и  всё

Дело не в хоткее, там добавляется пункт в контекстное меню.

Stakhovsky
На скорую руку из "Google Image Search":

скрытый текст
clipboard.png

Вариант 1:

Выделить код

Код:

(function() {
   if ( document.getElementById("context-site-1") ) return; 
               
   var menuItem = document.createElement("menuitem");
   menuItem.id = "context-site-1";
   menuItem.setAttribute("label", "Google");
   menuItem.setAttribute("class", "menuitem-iconic");
   menuItem.setAttribute("image", "data:image/x-icon;base64,AAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBKBMpTCYX4GMrH/9gMxn/YDQV/2cyG/9nLxr/YjMd/10xHv9cMRz/XjIa/2ExHP9gNRn/YDIV/2IwHf9ULSL/RCcU4EEoEylLKBfgcjUe/349IP98QRr/gEEd/39AKP+FUjv/h2NL/4lkUP+GYEv/hVQ+/35CJv9+Phz/gEIb/4c8H/96PCT/azgb/0koFOBpMyT/jD8i/4RFIf97RB3/hEUr/7GCdf/q29L/+e3e/97HuP/dwLD/6M2+/76VhP9+RSr/hUMg/5NAH/+NQCX/h0Ai/2Q1Iv9yOyf/lkYn/4xFJP+HSSn/m25Y//7y6v/bw7f/fkw2/3hBJv90QSX/hFI9/+nUxv+2k4H/i0kq/5VIJP+QRiL/lkYn/3Q5Kv9zQSn/mUkp/5tJKf+XSin/roJr//757f+0gG//l0oq/5NMI/+WTCH/i00u/8q0o//jx7j/mFU6/5JMJP+TTiL/l0wl/3Y/K/93Rif/oE4p/6ZNK/+jTSz/pGpS//rn2v/Np5b/kFEx/5BSK/+XTyv/nmFJ/+rTyP/lyrv/nlk+/5NRJv+WUib/l1Ik/3lFK/+BSyr/plQt/6ZULP+mUyv/nFIz/6d3Yf/hxrX/3b6n/7SUf/+7l4b/8NjL//7z6//BkoH/mlMz/55TLP+iUyv/olMp/4FJK/+FSzP/qVUz/61ZMf+sWSv/rFYs/59TM/+cWT//nmJJ/8OSgf/+8ub/+O/b/8ikkv+iVTb/qVgv/6pVMP+1WDT/qVY1/4ZMMf+MUTX/q1sx/7RZMf+2WjH/t1wv/7JbLf+oXDT/nVtD/8yajv/+8uf/ybGZ/5VYOP+zWDL/t1sx/7NYMv+5WjX/sFk2/49SM/+VVDn/s143/7hfNP+8WzX/v141/6xeMv/ZoYD/+9/I/+DBtP/Ss6P/7L+l/7l1Tf+1XjT/vlw0/7tdM/+6YC//tV42/5FYNP+cU0D/uGE9/75fNf/GZTb/wGI4/8OBYv//5tT/5byr/6RjSP+lXD//26eM//TNsf+3YkH/xGI3/8NjNf+7Yi//uGE3/5pZOv+hWEH/wGY9/8RlNP/KaDf/xWY3/9+ef///5tv/v4Vt/8NmOv+9ZUD/xI16//7o2v/FgGX/x2g5/8poNv/KaDb/xWU5/6ZYQv+mYUH/y2s7/8xwN//TbTf/0m46/+CYd///59X/vIJk/81tOv/Bbz//4a6b//7n2P/FiGL/yWw4/9FtN//KcDf/zG45/6dfQP+tZT//1W4//9pxPf/VbTz/1G5B/75wTf/31L7/z56C/8V5TP/TkGP/+NXC//XSv/+4cEr/0nA7/9VwO//Ubz7/1G88/61kP/+0bkj/4XNC/99wPv/gckL/321B/9VwR//Gf2D/6reX/+/DoP/82br//uHO//LSvv/mp33/3nhJ/9dwQv/bb0X/23BG/7RrSP+wb0r/4nhK/+V3Rf/qeEX/8HZE/+lzQf/adUf/yWg+/7lfO/+tYDz/qWFA/6xeOf/IaTn/5nND/+h1SP/pdkj/3ndN/7RtUP+NWTrg2oJX/+uGVf/ofkv/84FN/++ETv/qfk//6n5Q/+h+Uv/ngFP/5oFS/+d/UP/nfk//839O/+5+Tv/uhVj/3YFa/5JYPOCRVkEppFo64NN8UP/dgVT/3oRR/92DTP/ihVj/34FX/+ODVf/mg1T/5IRO/96ET//cglH/4YJT/+CCVv/Te1D/oVk44JBVQCkAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEEAAABBAAAAQQAAAEE=");
   menuItem.setAttribute("oncommand", "getBrowser().selectedTab = getBrowser().addTab('https://www.google.com')");
   document.getElementById("context-searchselect").parentNode.insertBefore( menuItem, document.getElementById("context-searchselect") );
   
   document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", function() {
     menuItem.hidden = !gContextMenu; 
     }, false);
})();
(function() {
   if ( document.getElementById("context-site-2") ) return; 
               
   var menuItem = document.createElement("menuitem");
   menuItem.id = "context-site-2";
   menuItem.setAttribute("label", "Форум Mozilla Россия");
   menuItem.setAttribute("class", "menuitem-iconic");
   menuItem.setAttribute("image", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVHjaYvz//z8DJQAggJiQOe/fv2fv7Oz8rays/N+VkfG/iYnJfyD/1+rVq7ffu3dPFpsBAAHEAHIBCJ85c8bN2Nj4vwsDw/8zQLwKiO8CcRoQu0DxqlWrdsHUwzBAAIGJmTNnPgYa9j8UqhFElwPxf2MIDeIrKSn9FwSJoRkAEEAM0DD4DzMAyPi/G+QKY4hh5WAXGf8PDQ0FGwJ22d27CjADAAIIrLmjo+MXA9R2kAHvGBA2wwx6B8W7od6CeQcggKCmCEL8bgwxYCbUIGTDVkHDBia+CuotgACCueD3TDQN75D4xmAvCoK9ARMHBzAw0AECiBHkAlC0Mdy7x9ABNA3obAZXIAa6iKEcGlMVQHwWyjYuL2d4v2cPg8vZswx7gHyAAAK7AOif7SAbOqCmn4Ha3AHFsIDtgPq/vLz8P4MSkJ2W9h8ggBjevXvHDo4FQUQg/kdypqCg4H8lUIACnQ/SOBMYI8bAsAJFPcj1AAEEjwVQqLpAbXmH5BJjqI0gi9DTAAgDBBCcAVLkgmQ7yKCZxpCQxqUZhAECCJ4XgMl493ug21ZD+aDAXH0WLM4A9MZPXJkJIIAwTAR5pQMalaCABQUULttBGCCAGCnNzgABBgAMJ5THwGvJLAAAAABJRU5ErkJggg==");
   menuItem.setAttribute("oncommand", "getBrowser().selectedTab = getBrowser().addTab('https://forum.mozilla-russia.org/index.php')");
   document.getElementById("context-searchselect").parentNode.insertBefore(menuItem, document.getElementById("context-searchselect"));
   
   document.getElementById("contentAreaContextMenu").addEventListener("popupshowing", function() {
     menuItem.hidden = !gContextMenu; 
     }, false);
})();

Вариант 2:

Выделить код

Код:

(function() {
   if ( document.getElementById("context-site-1") ) return; 
               
   var menuItem = document.createElement("menuitem");
   menuItem.id = "context-site-1";
   menuItem.setAttribute("label", "Google");
   menuItem.setAttribute("tooltiptext", 'Перейти на "Google"');
   menuItem.setAttribute("class", "menuitem-iconic");
   menuItem.setAttribute("image", "data:image/x-icon;base64,AAABAAEAEhIAAAEAIACABQAAFgAAACgAAAASAAAAJAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBKBMpTCYX4GMrH/9gMxn/YDQV/2cyG/9nLxr/YjMd/10xHv9cMRz/XjIa/2ExHP9gNRn/YDIV/2IwHf9ULSL/RCcU4EEoEylLKBfgcjUe/349IP98QRr/gEEd/39AKP+FUjv/h2NL/4lkUP+GYEv/hVQ+/35CJv9+Phz/gEIb/4c8H/96PCT/azgb/0koFOBpMyT/jD8i/4RFIf97RB3/hEUr/7GCdf/q29L/+e3e/97HuP/dwLD/6M2+/76VhP9+RSr/hUMg/5NAH/+NQCX/h0Ai/2Q1Iv9yOyf/lkYn/4xFJP+HSSn/m25Y//7y6v/bw7f/fkw2/3hBJv90QSX/hFI9/+nUxv+2k4H/i0kq/5VIJP+QRiL/lkYn/3Q5Kv9zQSn/mUkp/5tJKf+XSin/roJr//757f+0gG//l0oq/5NMI/+WTCH/i00u/8q0o//jx7j/mFU6/5JMJP+TTiL/l0wl/3Y/K/93Rif/oE4p/6ZNK/+jTSz/pGpS//rn2v