Полезная информация

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

№775119-05-2014 23:32:42

rbfyec
Участник
 
Группа: Members
Зарегистрирован: 07-07-2012
Сообщений: 365
UA: Firefox 29.0

Re: Custom Buttons

bunda1 пишет

Не знаю, наверно я такое не сделаю :/

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

Спасибо ещё раз за помощь!

Отсутствует

 

№775220-05-2014 08:21:04

>ORG@niZM<
Участник
 
Группа: Members
Зарегистрирован: 20-08-2013
Сообщений: 66
UA: Firefox 29.0

Re: Custom Buttons

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

Выделить код

Код:

// Вывод названия страницы на кнопку
this.__defineSetter__("title", function(val) {
    if(val == this.__savedTitle)
        return;
    this.__savedTitle = val;
    this.setAttribute("label", val);
    this.tooltipText = val;
});

var titleUpdater = {
    button: this,
    handleEvent: function(e) {
        if(e.attrName != "title" || e.originalTarget != document.documentElement)
            return;
        this.button.title = e.newValue;
        //setTimeout(function() { throw new Error(">> " + e.newValue); }, 0);
    }
};
document.documentElement.addEventListener("DOMAttrModified", titleUpdater, true);
this.__savedTitle = this.title = document.title;

var sId = "__customButtonsStyle__" + this.id; // Unique style "id"
var cssStr = '\
    %button% {\n\
        color: windowText !important;\n\
        text-shadow: window 2px -2px 4px, window -2px 2px 4px, window -2px -4px 4px, window 2px 4px 4px !important;\n\
        -moz-box-align: start !important;\n\
\n\
        background: transparent !important;\n\
        -moz-box-shadow: none !important;\n\
        -moz-appearance: none !important;\n\
        border: none !important;\n\
        /* width: auto !important; */\n\
        width: 550px !important;\n\
    }\n\
    %button% > image {\n\
        display: none !important;\n\
    }\n\
    %button% > label {\n\
        display: -moz-box !important;\n\
    }\n\
    '
    .replace(/%button%/g, "#" + this.id);

function sheet(cssStr, removeFlag) {
    var cc = Components.classes;
    var sss = cc["@mozilla.org/content/style-sheet-service;1"]
        .getService(Components.interfaces.nsIStyleSheetService);
    var ios = cc["@mozilla.org/network/io-service;1"]
        .getService(Components.interfaces.nsIIOService);
    var data = "data:text/css," + encodeURIComponent(cssStr);
    var uri = ios.newURI(data, null, null);
    if(sss.sheetRegistered(uri, sss.USER_SHEET))
        sss.unregisterSheet(uri, sss.USER_SHEET);
    if(removeFlag)
        return;
    sss.loadAndRegisterSheet(uri, sss.USER_SHEET);
    window[sId] = cssStr;
}
if(!(sId in window))
    sheet(cssStr);
else if(window[sId] != cssStr) {
    sheet(window[sId], true);
    sheet(cssStr);
}


на австралисе имеем
5174303.png

можно как-то поправить?

Отсутствует

 

№775320-05-2014 09:17:32

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 29.0

Re: Custom Buttons

Infocatcher пишет
Indomito пишет

Как бы сделать так, что-бы по ПКМ на пункте из списка не было автоскрытия...

Вот пример: code_snippets/autoOpenCloseMenu.js

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

А "подводных камней" нет? На версии 28.0.1 не проверял.


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№775420-05-2014 09:58:33

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 29.0

Re: Custom Buttons

Infocatcher а как поменять стандартный значек у подпапки в контексте твоей кнопки?
Я всё перепробовал... ну почти всё :)

Скриншот с вопросом
sasaIConFld10.png

Отредактировано Indomito (20-05-2014 09:59:43)


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№775520-05-2014 10:49:09

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 29.0

Re: Custom Buttons

>ORG@niZM< пишет

// Вывод названия страницы на кнопку

А с этой версией как?

Indomito пишет

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

Так работает или нет? :)

Indomito пишет

А "подводных камней" нет? На версии 28.0.1 не проверял.

В старых версиях document.popupNode не сбрасывается автоматически в null после закрытия контекстного меню, а так должно работать начиная с 1.5.

Indomito пишет

как поменять стандартный значек у подпапки в контексте твоей кнопки?

Выделить код

Код:

menu.bookmark-item[label="Имя папки"] {
    list-style-image: url("ссылка на иконку") !important;
    -moz-image-region: auto !important;
}

Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№775620-05-2014 10:56:48

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 29.0

Re: Custom Buttons

Infocatcher пишет

Так работает или нет?

работает, ошибок не заметил.

Код в кнопку "лепить"

Выделить код

Код:

menu.bookmark-item[label="Имя папки"] {
    list-style-image: url("ссылка на иконку") !important;
    -moz-image-region: auto !important;
}

или куда?
Если в кнопку то в начало или конец секции инициализации?

И можно как то в виде массива сделать BASE64, а не через URL ?

Добавлено 20-05-2014 11:02:05

okkamas_knife пишет

используй стили

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

Отредактировано Indomito (20-05-2014 11:02:05)


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№775720-05-2014 11:14:42

>ORG@niZM<
Участник
 
Группа: Members
Зарегистрирован: 20-08-2013
Сообщений: 66
UA: Firefox 29.0

Re: Custom Buttons

Infocatcher пишет

А с этой версией как?

всё норм. спасибо.

Отсутствует

 

№775820-05-2014 11:29:39

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 29.0

Re: Custom Buttons

Indomito пишет

И можно как то в виде массива сделать BASE64, а не через URL ?

Ссылка может быть любая, в том числе и data:image/png;base64,...
И если через userChrome.css, можно использовать относительные ссылки.

Indomito пишет

хочется в контексте одной кнопки.

Вот пример, добавлять в инициализацию:

Выделить код

Код:

setTimeout(function() {
    var cssStr = ('\
        @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");\n\
        @-moz-document url("' + document.documentURI + '") {\n\
            %button% menu.bookmark-item[label="Имя папки"] {\n\
                list-style-image: url("' + self.image + '") !important;\n\
                -moz-image-region: auto !important;\n\
            }\n\
        }')
        .replace(/%button%/g, "#" + self.id);
    var cssURI = Services.io.newURI("data:text/css," + encodeURIComponent(cssStr), null, null);
    var sss = Components.classes["@mozilla.org/content/style-sheet-service;1"]
        .getService(Components.interfaces.nsIStyleSheetService);
    if(!sss.sheetRegistered(cssURI, sss.USER_SHEET))
        sss.loadAndRegisterSheet(cssURI, sss.USER_SHEET);
    addDestructor(function(reason) {
        if(reason == "update" || reason == "delete") {
            if(sss.sheetRegistered(cssURI, sss.USER_SHEET))
                sss.unregisterSheet(cssURI, sss.USER_SHEET);
        }
    });
}, 50);

Вместо «url("' + self.image + '")» можно сразу вписывать «url("data:image/png;base64,...")».


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№775920-05-2014 11:40:35

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 29.0

Re: Custom Buttons

Infocatcher встречный вопрос.
Это я понимаю для каждой папки? В пределах одной функции?

А если массивом?
Я про фрагмент кода, я бы правил, но боюсь поломать конструкцию.

Выделить код

Код:

var cssStr = ('\
        @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");\n\
        @-moz-document url("' + document.documentURI + '") {\n\
            %button% menu.bookmark-item[label="Имя папки"] {\n\
                list-style-image: url("' + self.image + '") !important;\n\
                -moz-image-region: auto !important;\n\
            }\n\
        }')

А этот код

Выделить код

Код:

menu.bookmark-item[label="Имя папки"] {
    list-style-image: url("ссылка на иконку") !important;
    -moz-image-region: auto !important;
}

не сработал, в секции инициализации, в начале описания переменных.

Отредактировано Indomito (20-05-2014 12:20:23)


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№776020-05-2014 12:19:58

Indomito
Участник
 
Группа: Members
Откуда: Москва-Север
Зарегистрирован: 27-08-2009
Сообщений: 426
UA: Firefox 29.0

Re: Custom Buttons

Добавлено 20-05-2014 12:07:01
Pony_Smile_Pack это не то, мне нужно сохранять иконки в контексте кнопки, т.к. я их экспортирую используя свою же кнопку FF Exp Imp CB (см. готовые кнопки)

А если использовать твой метод, то проще использовать userChrome.css

Выделить код

Код:

/* set default namespace to XUL */
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");

/* Спрятать иконки в персональной панели */
toolbarbutton.bookmark-item > .toolbarbutton-icon {
display: none;
}

/* Сменить иконки в закладках на собственные */
toolbarbutton.bookmark-item {
list-style-image: url('the\path\to\yourimage.xxx') !important;
-moz-image-region: rect(0px 16px 16px 0px) !important;
}
toolbarbutton.bookmark-item[container="true"] {
list-style-image: url('the\path\to\yourimage.xxx') !important;
-moz-image-region: rect(0px 16px 16px 0px) !important;
}

Отредактировано Indomito (20-05-2014 12:25:13)


"Никогда не выявляйте в программе ошибки, если не знаете, что с ними дальше делать." Штейнбах

Отсутствует

 

№776120-05-2014 18:49:23

Ki_rrrilll
Участник
 
Группа: Members
Зарегистрирован: 22-11-2013
Сообщений: 127
UA: Firefox 29.0

Re: Custom Buttons

Я обновился до 29 версии и теперь наблюдаю неприятные вещи.
Раньше, если была ошибка в коде кнопки, в консоли можно было увидеть, в какой именно кнопке, и можно было кликнуть и именно эта кнопка открывалась в редакторе. И даже строка с ошибкой уже подсвечена.

А сейчас, в какой бы кнопке какая бы ни была ошибка, в консоли всегда ссылка на некий файл размером 55 байт. id кнопки правда в ссылке видно
2014052017_7639911_12188782.png

а в файле одна строчка

Выделить код

Код:

(new Function (argNames, code)). apply (oButton, args);

Это как?

Отсутствует

 

№776220-05-2014 20:48:57

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 29.0

Re: Custom Buttons

okkamas_knife
А эту кнопку на 29 [firefox] можно починить, а то после первого вызова пункта нужно браузер перезагружать чтобы вызвать другой.
https://forum.mozilla-russia.org/viewto … 08#p527108

Отредактировано villa7 (20-05-2014 20:49:53)


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№776321-05-2014 07:34:27

>ORG@niZM<
Участник
 
Группа: Members
Зарегистрирован: 20-08-2013
Сообщений: 66
UA: Firefox 29.0

Re: Custom Buttons

villa7
у меня работает нормально. на всякий

Выделить код

Код:

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%u0442%u043A%u0440%u044B%u0442%u044C%20%u0432%20%u043D%u0438%u0436%u043D%u0435%u0439%20%u043F%u0430%u043D%u0435%u043B%u0438%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABxUlEQVR4XqWRP2oVURSHvztzXyZg/ENiZ2NjOsUtCHYuQndh4QIs3YCbsLBRwQUIgpViIQQFQdTE5M2bNzPnj+cy7zGFgRT+4OM7d5hzONybbj89enVwrbkngzO0wtBpEF7N9bgOr5SxG5HesF5wWePd0dt0//nP9d3D/ebkBJan0LZwVhwsC2ewCrpgHWdrAQcMaF/2eX83jbf2aE6BdRNcDq5Ctw534dXGhRaGHsyhwvn8IY/58MB5dAfcAcK2MYDPtRmoGmqKidMs4OGTilwDi4o5NefG3RFxzILsNDXkysmYclFKk4iFDdVpSAWohvWCfndH1cIW3g5RrOBGFjF+LwcS6fy1tWBTg3kxGl7UMIqSv/5oefbiGHX+SUrz0Lmciku7Fcetkm9c3+Xxg5uMNk9wKxjmHiZsQVgddwvgyo7x7s1Hcq5gr6mYA5ijmhDV0oSaIhIm8Onb2AcG2efdcWd704EhYrgXl/OMmYNPVME2mG1/sOLtC2ybwrZxYIYDuQ5Nceo6SAZiaA6JYmlaXcxY4NMTVrCTy0sk8uv3v+Tb9z/Sr0ZkEKQfkHEMK1o8FAQVAQdnSl0lPn05keTu/E/+ApLnoYXyGb2zAAAAAElFTkSuQmCC%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bvar%20icon%20%3D%20document.getAnonymousElementByAttribute%28%20this%2C%20%27class%27%2C%20%27toolbarbutton-icon%27%29%3B%0Aicon.style.width%20%3D%20%2716px%27%2C%20icon.style.height%20%3D%20%2716px%27%3B%0A%0Athis.bottomPanel%20%3D%20function%28aURL%29%20%7B%0A%20%20var%20prefBranch%20%3D%20%22custombuttons.bottomPanel.%22%0A%0A%20%20if%28%21aURL%20%26%26%20aURL%20%21%3D%20%22%22%29%20%7B%0A%20%20%20%20try%20%7B%0A%20%20%20%20%20%20aURL%20%3D%20gPrefService.getCharPref%28prefBranch%20+%20%22url%22%29%3B%0A%20%20%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20%20%20aURL%20%3D%20%22%22%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%20%20if%28aURL%20%3D%3D%20%22%22%29%20return%3B%0A%0A%20%20if%28aURL%20%3D%3D%20gURLBar.value%20%26%26%20%21aURL.match%28/%5E%5Cw+%3F%5C%3A/%29%29%20aURL%20%3D%20%22http%3A//%22%20+%20aURL%3B%0A%0A%20%20var%20panelID%20%3D%20%22bottom-panel%22%3B%0A%20%20var%20gPanel%20%3D%20document.getElementById%28panelID%29%3B%0A%20%20var%20height%3B%0A%20%20try%20%7B%0A%20%20%20%20height%20%3D%20gPrefService.getIntPref%28prefBranch%20+%20%22height%22%29%3B%0A%20%20%7D%20catch%28ex%29%20%7B%0A%20%20%20%20height%20%3D%20400%3B%0A%20%20%7D%0A%0A%20%20if%28gPanel%29%20%7B%0A%0A%20%20%20%20var%20src%20%3D%20gPanel.firstChild.nextSibling.getAttribute%28%22src%22%29%3B%0A%20%20%20%20if%28aURL%20%21%3D%20src%29%20%7B%0A%20%20%20%20%20%20gPanel.firstChild.nextSibling.setAttribute%28%22src%22%2C%20aURL%29%3B%0A%20%20%20%20%20%20//gPanel.firstChild.nextSibling.loadURI%28aURL%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20gPrefService.setIntPref%28prefBranch%20+%20%22height%22%2C%20gPanel.height%29%3B%0A%20%20%20%20%20%20gPanel.parentNode.removeChild%28gPanel.previousSibling%29%3B%0A%20%20%20%20%20%20gPanel.parentNode.removeChild%28gPanel%29%3B%0A%20%20%20%20%7D%0A%0A%20%20%7D%20else%20%7B%0A%0A%20%20%20%20var%20appContent%20%3D%20document.getElementById%28%22appcontent%22%29%3B%0A%0A%20%20%20%20var%20spl%20%3D%20appContent.appendChild%28document.createElement%28%22splitter%22%29%29%3B%0A%20%20%20%20%20%20%20%20spl.setAttribute%28%22collapse%22%2C%20%22after%22%29%3B%0A%20%20%20%20%20%20%20%20spl.style.border%20%3D%20%22none%22%3B%0A%20%20%20%20%20%20%20%20spl.style.borderTop%20%3D%20%221px%20solid%20threedhighlight%22%3B%0A%20%20%20%20%20%20%20%20spl.setAttribute%28%22onclick%22%2C%20%22this.setAttribute%28%27state%27%2C%20%27%27%29%3B%22%29%3B%0A%0A%20%20%20%20var%20box%20%3D%20appContent.appendChild%28document.createElement%28%22hbox%22%29%29%3B%0A%20%20%20%20%20%20%20%20box.id%20%3D%20panelID%3B%0A%20%20%20%20%20%20%20%20box.height%20%3D%20height%3B%0A%20%20%20%20%20%20%20%20box.orient%20%3D%20%22vertical%22%3B%0A%0A%20%20%20%20var%20tbr%20%3D%20box.appendChild%28document.createElement%28%22toolbar%22%29%29%3B%0A%20%20%20%20%20%20%20%20tbr.setAttribute%28%22fullscreentoolbar%22%2C%20true%29%3B%0A%0A%20%20%20%20var%20spr%20%3D%20tbr.appendChild%28document.createElement%28%22spacer%22%29%29%3B%0A%20%20%20%20%20%20%20%20spr.setAttribute%28%22flex%22%2C%201%29%3B%0A%0A%20%20%20%20var%20btn%20%3D%20tbr.appendChild%28document.createElement%28%22toolbarbutton%22%29%29%3B%0A%20%20%20%20%20%20%20%20btn.style.listStyleImage%20%3D%20%22url%28chrome%3A//global/skin/icons/Minimize.gif%29%22%3B%0A%20%20%20%20%20%20%20%20btn.minimize%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20gPanel%20%3D%20document.getElementById%28%22bottom-panel%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20gPanel.previousSibling.setAttribute%28%22state%22%2C%20%22collapsed%22%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20btn.setAttribute%28%22oncommand%22%2C%20%22this.minimize%28%29%22%29%3B%0A%0A%20%20%20%20var%20btc%20%3D%20tbr.appendChild%28document.createElement%28%22toolbarbutton%22%29%29%3B%0A%20%20%20%20%20%20%20%20btc.className%20%3D%20%22tabs-closebutton%22%3B%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20btc.closePanel%20%3D%20function%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20var%20gPanel%20%3D%20document.getElementById%28%22bottom-panel%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20gPrefService.setIntPref%28prefBranch%20+%20%22height%22%2C%20gPanel.height%29%3B%0A%20%20%20%20%20%20%20%20%20%20gPanel.parentNode.removeChild%28gPanel.previousSibling%29%3B%0A%20%20%20%20%20%20%20%20%20%20gPanel.parentNode.removeChild%28gPanel%29%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20btc.setAttribute%28%22id%22%2C%20%22closeBottomPanel%22%29%3B%0A%20%20%20%20%20%20%20%20btc.setAttribute%28%22oncommand%22%2C%20%22this.closePanel%28%29%22%29%3B%0A%0A%20%20%20%20var%20ifr%20%3D%20box.appendChild%28document.createElement%28%22browser%22%29%29%3B%0A%20%20%20%20%20%20%20%20ifr.setAttribute%28%22type%22%2C%20%22content%22%29%3B%0A%20%20%20%20%20%20%20%20ifr.setAttribute%28%22flex%22%2C%201%29%3B%0A%20%20%20%20%20%20%20%20ifr.setAttribute%28%22src%22%2C%20aURL%29%3B%0A%20%20%20%20%20%20%20%20ifr.setAttribute%28%22tooltip%22%2C%20%22aHTMLTooltip%22%29%3B%0A%20%20%20%20%20%20%20%20ifr.setAttribute%28%22onclick%22%2C%20%22return%20contentAreaClick%28event%2C%20true%29%22%29%3B%0A%20%20%20%20%20%20%20%20ifr.setAttribute%28%22autocompletepopup%22%2C%20%22PopupAutoComplete%22%29%3B%0A%20%20%20%20%20%20%20%20ifr.setAttribute%28%22contextmenu%22%2C%20%22contentAreaContextMenu%22%29%3B%0A%20%20%20%20%20%20%20%20ifr.setAttribute%28%22contentcontextmenu%22%2C%20%22contentAreaContextMenu%22%29%3B%0A%20%20%7D%0A%0A%20%20gPrefService.setCharPref%28prefBranch%20+%20%22url%22%2C%20aURL%29%3B%0A%0A%7D%20%20%0A//------------------------------------%0Athis.getFile%20%3D%20function%28%29%20%7B%0A%20%20try%20%7B%0A%20%20%20%20const%20nsIFilePicker%20%3D%20Components.interfaces.nsIFilePicker%3B%0A%20%20%20%20var%20fp%20%3D%20Components.classes%5B%27@mozilla.org/filepicker%3B1%27%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20.createInstance%28nsIFilePicker%29%3B%0A%20%20%20%20fp.init%28window%2C%20gNavigatorBundle.getString%28%22openFile%22%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20nsIFilePicker.modeOpen%29%3B%0A%20%20%20%20fp.appendFilters%28nsIFilePicker.filterAll%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20nsIFilePicker.filterText%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20nsIFilePicker.filterImages%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20nsIFilePicker.filterXML%20%7C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20nsIFilePicker.filterHTML%29%3B%0A%20%20%20%20if%28fp.show%28%29%20%3D%3D%20nsIFilePicker.returnOK%29%0A%20%20%20%20%20%20return%20fp.fileURL.spec%3B%0A%20%20%20%20else%20return%20%22%22%3B%0A%20%20%7D%20catch%20%28ex%29%20%7B%0A%20%20%7D%0A%7D%0A%0A//------------------------------------%0A%0A%0Afunction%20addMenuitem%28aLabel%2C%20aURL%2C%20aNode%2C%20aObjString%29%20%7B%0A%20%20var%20mItem%20%3D%20aNode.appendChild%28document.createElement%28%22menuitem%22%29%29%3B%0A%20%20mItem.setAttribute%28%22label%22%2C%20aLabel%29%3B%0A%20%20mItem.setAttribute%28%22oncommand%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20aObjString%20+%20%22.bottomPanel%28%27%22%20+%20aURL%20+%20%22%27%29%3B%22%29%3B%0A%7D%0A%0A%0Afunction%20addSeparator%28aNode%2C%20aNum%29%20%7B%0A%20%20var%20separator%20%3D%20aNode.appendChild%28document.createElement%28%22menuseparator%22%29%29%3B%0A%20%20separator.id%20%3D%20%22bottom-panel-button-separator%22%20+%20aNum%3B%0A%7D%0A%0Avar%20mPopup%20%3D%20document.createElement%28%22menupopup%22%29%3B%0AmPopup.setAttribute%28%22oncommand%22%2C%20%22event.stopPropagation%28%29%22%29%3B%0AmPopup.setAttribute%28%22onpopupshowing%22%2C%20%22this.parentNode.popupShowing%28this%29%22%29%3B%0A%0A%0AobjString%20%3D%20%22this.parentNode.parentNode%22%3B%0AaddMenuitem%28%22about%3Aconfig%22%2C%20%22about%3Aconfig%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22about%3Asupport%22%2C%20%22about%3Asupport%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22Error%20Console%22%2C%20%22chrome%3A//global/content/console.xul%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22about%3Amemory%22%2C%20%22about%3Amemory%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22about%3Aplugins%22%2C%20%22about%3Aplugins%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22about%3Acache%22%2C%20%22about%3Acache%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22about%3Acache%3Fdevice%3Ddisk%22%2C%20%22about%3Acache%3Fdevice%3Ddisk%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22about%3Acache%3Fdevice%3Dmemory%22%2C%20%22about%3Acache%3Fdevice%3Dmemory%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22about%3Acache%3Fdevice%3Doffline%22%2C%20%22about%3Acache%3Fdevice%3Doffline%22%2C%20mPopup%2C%20objString%29%3B%0A%0AaddSeparator%28mPopup%2C%200%29%3B%0AaddMenuitem%28%22%u041D%u0430%u0441%u0442%u0440%u043E%u0439%u043A%u0438%22%2C%20%22chrome%3A//browser/content/preferences/preferences.xul%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22%u0414%u043E%u043F%u043E%u043B%u043D%u0435%u043D%u0438%u044F%22%2C%20%22chrome%3A//mozapps/content/extensions/extensions.xul%3Ftype%3Dextensions%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22%u041C%u0435%u043D%u0435%u0434%u0436%u0435%u0440%20%u041F%u0430%u0440%u043E%u043B%u0435%u0439%22%2C%20%22chrome%3A//passwordmgr/content/passwordManager.xul%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22%u0423%u043F%u0440%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20Cookies%22%2C%20%22chrome%3A//browser/content/preferences/cookies.xul%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22DOM%20Inspector%22%2C%20%22chrome%3A//inspector/content/inspector.xul%22%2C%20mPopup%2C%20objString%29%3B%0AaddSeparator%28mPopup%2C%200%29%3B%0AaddMenuitem%28%22%u0417%u0430%u0433%u0440%u0443%u0437%u043A%u0438%22%2C%20%22chrome%3A//mozapps/content/downloads/downloads.xul%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22%u0417%u0430%u043A%u043B%u0430%u0434%u043A%u0438%22%2C%20%22chrome%3A//browser/content/bookmarks/bookmarksPanel.xul%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22%u0418%u0441%u0442%u043E%u0440%u0438%u044F%22%2C%20%22chrome%3A//browser/content/history/history-panel.xul%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22%u0423%u043F%u0440%u0430%u0432%u043B%u0435%u043D%u0438%u0435%20%u0437%u0430%u043A%u043B%u0430%u0434%u043A%u0430%u043C%u0438%22%2C%20%22chrome%3A//browser/content/places/places.xul%22%2C%20mPopup%2C%20objString%29%3B%0AaddSeparator%28mPopup%2C%200%29%3B%0A%0Avar%20homePages%20%3D%20gHomeButton.getHomePage%28%29.split%28%22%7C%22%29%3B%0Avar%20homePage%20%3D%20homePages%5B0%5D%3B%0A%0AaddMenuitem%28%22%u0414%u043E%u043C%u0430%u0448%u043D%u044F%u044F%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0430%22%2C%20homePage%2C%20mPopup%2C%20objString%29%3B%0A%0AaddMenuitem%28%22%u0422%u0435%u043A%u0443%u0449%u0430%u044F%20%u0441%u0442%u0440%u0430%u043D%u0438%u0446%u0430%22%2C%20%22%27%20+%20content.location.href%20+%20%27%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22%u041F%u043E%u043A%u0430%u0437%u0430%u0442%u044C%20%u0438%u0441%u0445%u043E%u0434%u043D%u044B%u0439%20%u043A%u043E%u0434%22%2C%20%22view-source%3A%27%20+%20content.location.href%20+%27%22%2C%20mPopup%2C%20objString%29%3B%0AaddMenuitem%28%22%u041E%u0442%u043A%u0440%u044B%u0442%u044C%20%u0444%u0430%u0439%u043B%22%2C%20%22%27%20+%20this.parentNode.parentNode.getFile%28%29%20+%20%27%22%2C%20mPopup%2C%20objString%29%3B%0A%0A%0Athis.appendChild%28mPopup%29%3B%0Athis.type%20%3D%20%22menu%22%3B%0Athis.orient%20%3D%20%22horizontal%22%3B%0A%0A%0Afunction%20handleKeydown%28e%29%20%7B%20%0A%20%20if%20%28%20%21e.shiftKey%20%26%26%20%21e.altKey%20%26%26%20%21e.ctrlKey%20%26%26%20e.keyCode%20%3D%3D%2027%20%29%20%7B%0A%20%20%20%20%20%20%20if%20%28%20%21document.getElementById%28%27closeBottomPanel%27%29%20%29%20return%3B%0A%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%20e.stopPropagation%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20document.getElementById%28%27closeBottomPanel%27%29.click%28%29%3B%0A%20%20%20%20%20%20%20%7D%3B%20%20%0A%7D%0Awindow.addEventListener%28%27keydown%27%2C%20handleKeydown%2C%20false%29%3B%0A%0A%0A//%20%u0443%u0441%u0442%u0430%u043D%u0430%u0432%u043B%u0438%u0432%u0430%u0435%u043C%20%u0444%u043B%u0430%u0433%2C%20%u0447%u0442%u043E%u0431%u044B%20%u0444%u0443%u043D%u043A%u0446%u0438%u0438%20%u0438%20%u043E%u0431%u0440%u0430%u0431%u043E%u0442%u0447%u0438%u043A%u0438%20%u043D%u0435%20%u0438%u0441%u043F%u043E%u043B%u043D%u044F%u043B%u0430%u0441%u044C%20%u0434%u0432%u0430%u0436%u0434%u044B%20%20%0Athis.setAttribute%28%22stop%22%2C%22true%22%29%3B%5D%5D%3E%3C/initcode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5Bthis.bottomPanel%28%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%5Bnull%5D%5D%3E%3C/help%3E%0A%20%20%3Cattributes/%3E%0A%3C/custombutton%3E

Отсутствует

 

№776421-05-2014 08:33:36

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 29.0

Re: Custom Buttons

>ORG@niZM<
Тоже самое. А как Вы закрываете нижнее окно. Если не закрывать окно то работает, а если зарыть то перестаёт.
5958b2c589dft.jpg

Отредактировано villa7 (21-05-2014 08:36:41)


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№776521-05-2014 08:44:00

>ORG@niZM<
Участник
 
Группа: Members
Зарегистрирован: 20-08-2013
Сообщений: 66
UA: Firefox 29.0

Re: Custom Buttons

villa7
а! если последовательность "открыли окно - закрыли окно - попытались снова открыть окно", то да, больше не работает. Но если "открыть окно - открыть следующее окно - открыть следующее окно - ...", то окна открываются.
Нужен фикс.

Отредактировано >ORG@niZM< (21-05-2014 08:44:18)

Отсутствует

 

№776621-05-2014 08:46:02

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 29.0

Re: Custom Buttons

>ORG@niZM<
Вот и я о том же.


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№776721-05-2014 09:48:36

Uxapb
Участник
 
Группа: Members
Зарегистрирован: 25-01-2012
Сообщений: 137
UA: Firefox 29.0

Re: Custom Buttons

villa7 пишет

А как Вы закрываете нижнее окно.

Кликайте чуть правее значка минимизации. Обнаружил случайно. Фикса просить постеснялся. :blush:

Отсутствует

 

№776821-05-2014 14:14:01

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 29.0

Re: Custom Buttons

Indomito пишет

Infocatcher встречный вопрос.
Это я понимаю для каждой папки? В пределах одной функции?

А если массивом?

Так а что нужно получить? Свои иконки для каждой папки?
Тогда в любом случае придется тем или иным способом копировать вот эти строки:

Выделить код

Код:

%button% menu.bookmark-item[label="..."] {\n\
                list-style-image: url("...") !important;\n\
                -moz-image-region: auto !important;\n\
            }\n\

P.S. Тут еще подсказывают, что стиль не удалится при убирании кнопки с панели.
Если это критично, можно использовать document.createProcessingInstruction() или nsIDOMWindowUtils.loadSheet() (и уже без проверок на reason в деструкторе).


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№776921-05-2014 14:37:29

Ki_rrrilll
Участник
 
Группа: Members
Зарегистрирован: 22-11-2013
Сообщений: 127
UA: Firefox 29.0

Re: Custom Buttons

А как с моим вопросом https://forum.mozilla-russia.org/viewto … 09#p652409 ?

Отсутствует

 

№777021-05-2014 15:15:42

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 29.0

Re: Custom Buttons

Ki_rrrilll пишет

Я обновился до 29 версии и теперь наблюдаю неприятные вещи.
Раньше, если была ошибка в коде кнопки, в консоли можно было увидеть, в какой именно кнопке, и можно было кликнуть и именно эта кнопка открывалась в редакторе. И даже строка с ошибкой уже подсвечена.

А сейчас, в какой бы кнопке какая бы ни была ошибка, в консоли всегда ссылка на некий файл размером 55 байт. id кнопки правда в ссылке видно
http://i6.pixs.ru/storage/7/8/2/2014052 … 188782.png

а в файле одна строчка

Выделить код

Код:

(new Function (argNames, code)). apply (oButton, args);

Это как?

Версия Custom Buttons? Пример кода с ошибкой?

Например, у меня для вот такого в инициализации

Выделить код

Код:

setTimeout(function() {
    somethingWrongNotDirectlyInCode();
}, 0);
this.setAttribute("onclick", "somethingWrongInAttribute();");
somethingWrong();

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


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№777121-05-2014 15:21:50

2k1dmg
Участник
 
Группа: Members
Зарегистрирован: 06-04-2011
Сообщений: 190
UA: Firefox 29.0

Re: Custom Buttons

Infocatcher пишет

Если это критично, можно использовать document.createProcessingInstruction() или nsIDOMWindowUtils.loadSheet() (и уже без проверок на reason в деструкторе).

например так c nsIDOMWindowUtils.loadSheet():

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

Выделить код

Код:

setTimeout(function() {
    let cssStr = ('@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");\n' +
                '@-moz-document url("' + document.documentURI + '") {\n' +
                '    %button% menu.bookmark-item[label="Имя папки"] {\n' +
                '        list-style-image: url("' + self.image + '") !important;\n' +
                '        -moz-image-region: auto !important;\n' +
                '    }\n' +
                '}\n')
            .replace(/%button%/g, '#' + self.id);
    let getDOMWindowUtils = function(window) {
        return window.QueryInterface(Ci.nsIInterfaceRequestor).
                        getInterface(Ci.nsIDOMWindowUtils);
    };
    let cssURI = Services.io.newURI('data:text/css,' + encodeURIComponent(cssStr), null, null);
    let SHEET_TYPE = {
        'agent': 'AGENT_SHEET',
        'user': 'USER_SHEET',
        'author': 'AUTHOR_SHEET'
    };
    let cssType = SHEET_TYPE['author'];
    let winUtils = getDOMWindowUtils(window);
    try {
        winUtils.loadSheet(cssURI, winUtils[cssType]);
    }
    catch (ex) {};
    addDestructor(function(reason) {
        try {
            winUtils.removeSheet(cssURI, winUtils[cssType]);
        }
        catch (ex) {};
    });
}, 50);

Ki_rrrilll пишет

А как с моим вопросом https://forum.mozilla-russia.org/viewto … 09#p652409 ?

Включить старую Консоль ошибок: devtools.errorconsole.enabled = true

Отредактировано 2k1dmg (21-05-2014 15:28:28)

Отсутствует

 

№777221-05-2014 15:37:50

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 29.0

Re: Custom Buttons

2k1dmg пишет

Включить старую Консоль ошибок: devtools.errorconsole.enabled = true

Ммм... действительно. Я как-то эту бестолковую поделку так и не начал использовать, а Console² пока что работает.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№777321-05-2014 16:28:24

Infocatcher
Not found
 
Группа: Extensions
Зарегистрирован: 24-05-2007
Сообщений: 4339
UA: Firefox 29.0

Re: Custom Buttons

Вот так, вроде, работает с консолью браузера.


Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела

Отсутствует

 

№777421-05-2014 18:47:53

villa7
Участник
 
Группа: Members
Зарегистрирован: 21-07-2012
Сообщений: 2235
UA: Firefox 29.0

Re: Custom Buttons

Uxapb
Захерачил такой костыль, коль кнопка не лечится.

Выделить код

Код:

.tabs-closebutton {
list-style-image: url("chrome://global/skin/icons/Close.gif")!important; }

51e08bb6ce8et.jpg

Отредактировано villa7 (21-05-2014 18:51:45)


Лучше спросить у знающих - чем лезть не зная.

Отсутствует

 

№777521-05-2014 23:43:13

Ki_rrrilll
Участник
 
Группа: Members
Зарегистрирован: 22-11-2013
Сообщений: 127
UA: Firefox 29.0

Re: Custom Buttons

Infocatcher пишет

Вот так, вроде, работает с консолью браузера.

Спасибо! Я новую версию СВ поставил, но решил Console² поставить тоже. Родная Консоль ошибок, даже старая, не айс. 

Что в Console² делает кнопка Resource (Z)?

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]