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

Хотите узнать больше о расширениях? Посмотрите ролики, рассказывающие о работе с расширениями Firefox.

№505122-10-2012 23:08:17

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4810
UA: Firefox 3.6

Re: Custom Buttons

villa7 пишет

Хотел узнать, надежда есть или никак.
Вызвать меню всех установленных поисковиков в CB easy drag and go,
Сделать так что бы кнопка "Stf" сохраняла файл в нужную папку без запроса и окна сохранения

Stf - сделаю,
CB easy drag and go - :/

Отредактировано bunda1 (22-10-2012 23:28:01)

Отсутствует

 

№505223-10-2012 08:51:33

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 982
UA: Firefox 16.0

Re: Custom Buttons

Dumby

Infocatcher пишет

С первым кодом, на первый взгляд, все в порядке.

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

Отсутствует

 

№505323-10-2012 10:45:40

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 1830
UA: Firefox 10.0

Re: Custom Buttons

Inko7 пишет

Просто, странный конфликт какой-то...

Попробуй заменить

Выделить код

Код:

var item = TabView._window.GroupItems._activeGroupItem._children.length;
if ( item !== 1) return;

на

Выделить код

Код:

if (gBrowser.visibleTabs.length) return;

И обязательно рестарт.

Отсутствует

 

№505423-10-2012 11:23:05

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 982
UA: Firefox 16.0

Re: Custom Buttons

Dumby
Спасибище! Вроде работает как надо!!!! :beer:

Отсутствует

 

№505523-10-2012 17:31:59

Kamui
Участник
 
Группа: Members
Зарегистрирован: 31-03-2011
Сообщений: 1796
UA: Firefox 16.0

Re: Custom Buttons

Может кому пригодиться, кнопка заменяющая url-addon-bar:

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

Выделить код

Код:

if (location == "chrome://browser/content/browser.xul") {
    (function (win) {
        function $(id) {
            return document.getElementById(id);
        }
        var cssStr = (<><![CDATA[
@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);

@-moz-document url("chrome://browser/content/browser.xul") {

#urlbar-icons > #addon-bar .toolbarbutton-1 > .toolbarbutton-menubutton-dropmarker {
    border-style: none !important;
    box-shadow: none !important;
    padding: 0 0 0 1px !important;
}

#urlbar-icons > * {
    padding: 0 3px !important;
}

#urlbar-icons > #addon-bar,
#urlbar-icons > #addon-bar > #status-bar {
    -moz-appearance: none !important;
    height: 18px !important;
    min-height: 18px !important;
    border-style: none !important;
    background: transparent !important;
    -moz-box-align: center !important;
    padding: 0 !important;
    margin: 0 !important;
    box-shadow: none !important;
}

#urlbar-icons > #addon-bar > toolbaritem {
    -moz-box-align: center !important;
    -moz-box-pack: center !important;
}

#urlbar-icons > #addon-bar .toolbarbutton-1,
#urlbar-icons > #addon-bar statusbarpanel,
#urlbar-icons > #addon-bar .toolbarbutton-1 > .toolbarbutton-menubutton-button {
    -moz-appearance: none !important;
    border-style: none !important;
    border-radius: 0 !important;
    padding: 0 3px !important;
    margin: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    -moz-box-align: center !important;
    -moz-box-pack: center !important;
}

#urlbar-icons > #addon-bar > .toolbarbutton-1,
#urlbar-icons > #addon-bar > #status-bar > statusbarpanel {
    min-width: 18px !important;
    min-height: 18px !important;
}

#urlbar-icons > #addon-bar .toolbarbutton-1 > .toolbarbutton-icon,
#urlbar-icons > #addon-bar > #status-bar > statusbarpanel > .statusbarpanel-icon {
    max-width: 18px !important;
    /* max-height: 18px !important; */
    padding: 0 !important;
    margin: 0 !important;
}

#urlbar-icons > #addon-bar .toolbarbutton-1 > .toolbarbutton-menubutton-button,
#urlbar-icons > #addon-bar .toolbarbutton-1 > .toolbarbutton-menubutton-button > .toolbarbutton-icon {
    padding: 0 !important;
    margin: 0 !important;
}

#urlbar-icons > #addon-bar .toolbarbutton-1:not([disabled="true"]):hover,
#urlbar-icons > #addon-bar .toolbarbutton-1:not([disabled="true"])[type="menu-button"]:hover,
#urlbar-icons > #addon-bar .toolbarbutton-1:not([disabled="true"])[open="true"],
#urlbar-icons > #addon-bar .toolbarbutton-1:not([disabled="true"])[type="menu-button"][open="true"],
#urlbar-icons > #addon-bar > #status-bar statusbarpanel:not([disabled="true"]):hover,
#urlbar-icons > #addon-bar > #status-bar statusbarpanel:not([disabled="true"])[open="true"] {
    background-image: -moz-linear-gradient(rgba(242, 245, 249, 0.95), rgba(220, 223, 225, 0.67) 49%, rgba(198, 204, 208, 0.65) 51%, rgba(194, 197, 201, 0.3)) !important;
}

#urlbar-icons > #addon-bar #addonbar-closebutton,
#urlbar-icons > #addon-bar toolbarspring,
#urlbar-icons > #addon-bar toolbarspacer,
#urlbar-icons > #addon-bar toolbarseparator,
#urlbar-icons > #addon-bar > #status-bar > .statusbar-resizerpanel {
    display: none !important;
}

}
        ]]></>).toString();
        var style = document.createProcessingInstruction("xml-stylesheet", "title=\"url-addon-bar\" type=\"text/css\"" + " href=\"data:text/css;base64," + btoa(cssStr) + "\"");
        var main = $("main-window");
        document.insertBefore(style, main);
        var urlbarIcons = $("urlbar-icons");
        var addonBar = $("addon-bar");
        var browserBottombox = $("browser-bottombox");
        win.urlAddonBar = {
            init: function () {
                this._isInUrlbar = false;
                this.toggleUA();
                win.addEventListener("beforecustomization", this, true);
            },
            handleEvent: function (e) {
                switch (e.type) {
                    case "aftercustomization" :
                        win.removeEventListener(e.type, this, false);
                        break;
                    case "beforecustomization" :
                        win.addEventListener("aftercustomization", this, false);
                        break;
                }
                this.toggleUA();
            },
            toggleUA: function () {
                if (this._isInUrlbar) {
                    browserBottombox.appendChild(addonBar);
                    addonBar.setAttribute("context", "toolbar-context-menu");
                    addonBar.setAttribute("toolboxid", "navigator-toolbox");
                } else {
                    urlbarIcons.insertBefore(addonBar, urlbarIcons.firstChild);
                    addonBar.removeAttribute("context");
                    addonBar.removeAttribute("toolboxid");
                }
                this._isInUrlbar = !this._isInUrlbar;
            }
        };
        win.urlAddonBar.init();
        win.addEventListener("unload", function (e) {
            win.removeEventListener("unload", arguments.callee, false);
            win.removeEventListener("beforecustomization", win.urlAddonBar, true);
            delete win.urlAddonBar;
        }, false);
    })(this);
}

Отсутствует

 

№505623-10-2012 18:16:18

sergio147
Участник
 
Группа: Members
Зарегистрирован: 23-10-2012
Сообщений: 2
UA: Chrome 22.0

Re: Custom Buttons

Товарищи, нужна помощь с расширение CustomButtons.

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

Создал кнопку, в Инициализацию вставил вот такой код:

Выделить код

Код:

// If  middle click on Tab
function DoNotCloseTab(event){
if ( event.button == 1 && event.target.nodeName == 'tab') {
     event.stopPropagation();
     event.preventDefault();
     }
};
addEventListener("mousedown", DoNotCloseTab, false, gBrowser.mTabContainer);

Не помогло :sick:

Сам код отрабатывает, если в функцию DoNotCloseTab вставить  доп. действия, они происходят. Но потом всё равно встроенный обработчик закрывает вкладку.[firefox]

Подскажите, как же не пустить событие дальше??

PS^: может, проблема решается без CustomButtons? ;)

Отсутствует

 

№505723-10-2012 18:30:48

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 1830
UA: Firefox 10.0

Re: Custom Buttons

sergio147

1. замени false на true
2. возможно event.preventDefault(); можно выкинуть
3. возможно нехватает удаления обработчика

UPD: Да и событие - «click», извиняюсь, поторопился...

Отредактировано Dumby (23-10-2012 18:44:51)

Отсутствует

 

№505823-10-2012 18:48:51

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4810
UA: Firefox 3.6

Re: Custom Buttons

sergio147

Выделить код

Код:

gBrowser.mTabContainer.addEventListener("mousedown", function (event) {
  if ( event.button == 1 && event.target.localName == "tab" ) {
       event.preventDefault();
       event.stopPropagation(); 
       alert("1");
       }
}, false);

Отсутствует

 

№505923-10-2012 19:02:04

Inko7
Участник
 
Группа: Members
Зарегистрирован: 09-11-2009
Сообщений: 982
UA: Firefox 16.0

Re: Custom Buttons

bunda1
А твоя кнопочка "ЛКМ + ПКМ на текущий таб, переместить таб в новую группу" с предыдущей страницы точно работает? Что-то никак не могу запустить ...

Отсутствует

 

№506023-10-2012 19:06:44

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 1830
UA: Firefox 10.0

Re: Custom Buttons

bunda1

А в чём отличие от кода sergio147 ?

Ну кроме nodeName и localName и другого
способа добавления Listener'a

Отсутствует

 

№506123-10-2012 19:08:38

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4810
UA: Firefox 3.6

Re: Custom Buttons

Dumby пишет

bunda1
А в чём отличие от кода sergio147 ?

Мой работает.

Отсутствует

 

№506223-10-2012 19:29:06

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 1830
UA: Firefox 10.0

Re: Custom Buttons

bunda1 пишет

Мой работает.

У меня без alert'a - не работает :(
А с alert'ом - работает :D

Отсутствует

 

№506323-10-2012 19:36:47

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4810
UA: Firefox 3.6

Re: Custom Buttons

Да не работает, не подумал :)

Отсутствует

 

№506423-10-2012 20:30:49

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 1830
UA: Firefox 10.0

Re: Custom Buttons

bunda1

Спасибо за подтверждение.
Таким образом, если игнорировать констукцию вида addEventListener("someEvent", someFunction, useCapture, someNode);
( о её существовании узнал только лишь вчера )
то рабочий код, наверное, такой:

Выделить код

Код:

var node = gBrowser.mTabContainer;

function DoNotCloseTab(e){
    if ( e.button == 1 && e.target.nodeName == 'tab') e.stopPropagation();
}
node.addEventListener("click", DoNotCloseTab, true);

this.onDestroy = function() {
    node.removeEventListener("click", DoNotCloseTab, true);
};

Отсутствует

 

№506523-10-2012 21:00:58

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4810
UA: Firefox 3.6

Re: Custom Buttons

Dumby
На вид не чем отличается от предыдущих кодов.

Отсутствует

 

№506623-10-2012 21:32:09

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 1830
UA: Firefox 10.0

Re: Custom Buttons

bunda1

Может быть, но:

Другое событие:   «click» вместо «mousedown»
Другой последний аргумент: true вместо false

И, ты не сказал - работает или нет, а то может зря я это всё...

Отсутствует

 

№506723-10-2012 21:47:30

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4810
UA: Firefox 3.6

Re: Custom Buttons

Да работает, не заметил что там click.

Отсутствует

 

№506823-10-2012 22:49:14

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4810
UA: Firefox 3.6

Re: Custom Buttons

Сделал код каторый добавляет в контекстное меню раширеный на странице раширений about:addons новый пункт Открыть папку расширения.
Проблема в том что добавляетса новый пункт и в контекстное меню плагинов и тем, как убрать это.

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

Выделить код

Код:

gBrowser.tabContainer.addEventListener("TabAttrModified", function(event) { 
// ....
if ( event.target.linkedBrowser.currentURI.spec !== getBrowser().currentURI.spec ) return;
//
try {
    var popup = gBrowser.contentWindow.document.getElementById("addonitem-popup");
    //var type = popup.getAttribute("addontype");
    //custombuttons.alertSlide("alert", type);
    if ( popup && !popup.hasAttribute('OpenAddonHomepage') ) {
         popup.setAttribute('OpenAddonHomepage', 'true');
         var menuitem = document.createElement("menuitem");
         menuitem.setAttribute("id", "OpenAddonFolder");
         menuitem.setAttribute("label", "Открыть папку расширения");
         
         popup.appendChild(menuitem);
         
         gBrowser.contentWindow.document.getElementById("OpenAddonFolder").addEventListener("click", function(event) { 
                  
                  var Addons = gBrowser.contentWindow.document.getElementById('addon-list').childNodes;
                  for( var i=0; i < Addons.length; i++ ) {
                       if ( Addons[i].getAttribute('current') == 'true' ) {
                            var value = Addons[i].getAttribute('value');
                            
                            var dir = Components.classes['@mozilla.org/file/directory_service;1']
                                     .getService(Components.interfaces.nsIProperties)
                                    .get('ProfD', Components.interfaces.nsILocalFile);
                            dir.append('extensions');
                            dir.append( value );
                            if ( dir.exists() ) dir.launch();
 
                            var file = Components.classes['@mozilla.org/file/directory_service;1']
                                     .getService(Components.interfaces.nsIProperties)
                                    .get('ProfD', Components.interfaces.nsILocalFile);       
                            file.append('extensions');
                            file.append( value + '.xpi' )             
                            if ( file.exists() ) file.launch(); 
                            return;
                            }
                        }
                   }, false);
         }
}
catch(e) {}
}, false);

Отредактировано bunda1 (23-10-2012 22:49:53)

Отсутствует

 

№506923-10-2012 23:15:42

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

Re: Custom Buttons

bunda1
Сделать addEventListener("popupshowing", ... для контекстного меню и показывать/скрывать добавленный пункт.
А там или проверить, что в menupopup.triggerNode, или смотреть на document.getElementById("categories").selectedItem.


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

Отсутствует

 

№507023-10-2012 23:28:49

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4810
UA: Firefox 3.6

Re: Custom Buttons

Не работает:

Выделить код

Код:

var pop = document.getElementById("addonitem-popup");
pop.addEventListener("popupshowing", function(event) { alert(popup) }, false);

Ошибка: TypeError: pop is null

Выделить код

Код:

var popup = gBrowser.contentWindow.document.getElementById("addonitem-popup");
popup.addEventListener("popupshowing", function(event) { alert(popup) }, false);

Ошибка: TypeError: popup is null

Добавлено 23-10-2012 23:30:21
var popup = gBrowser.contentWindow.document.getElementById("addonitem-popup");
popup.addEventListener("popupshowing",...
Можно запустить только если это меню открыта.

Отредактировано bunda1 (23-10-2012 23:30:46)

Отсутствует

 

№507123-10-2012 23:41:06

Dumby
Участник
 
Группа: Members
Зарегистрирован: 12-08-2012
Сообщений: 1830
UA: Firefox 10.0

Re: Custom Buttons

bunda1 пишет

добавляетса новый пункт и в контекстное меню плагинов и тем

Да везде на about:addons, наверное...

Код не анализировал, но заметил, что если выбран пункт «Расширения»,
то у ноды: document.getEementById("category-extension")
появляются два дополнительных атрибута: current=true и selected=true
( Attributes Inspector - наше всё ! )
Возможно следует сделать проверку этого...

Отсутствует

 

№507223-10-2012 23:46:30

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4810
UA: Firefox 3.6

Re: Custom Buttons

Спасибо всем, я разобрался:

Выделить код

Код:

gBrowser.addEventListener("popupshowing", function(event) { 
var popup = gBrowser.contentWindow.document.getElementById("addonitem-popup");
if ( popup == null ) return;
     var type = popup.getAttribute("addontype");
     custombuttons.alertSlide("alert", type);
     gBrowser.contentWindow.document.getElementById("OpenAddonFolder").hidden = (type !== 'extension'); 
}, false);

Отредактировано bunda1 (23-10-2012 23:48:49)

Отсутствует

 

№507324-10-2012 22:21:26

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

Re: Custom Buttons

bunda1
Почему то у меня не дружат кнопки "Открыть новый таб двойным кликом левой кнопкой на титлебаре(Titlebar)"(у меня открывает по клику на панели вкладок) и "Двойной клик левой кнопкой на табе, закрыть страницу", по отдельности работают нормально, а если вместе то двойной клик по панели вкладок закрывает вкладку вместо открытия новой. Проверял на чистом профиле.


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

Отсутствует

 

№507424-10-2012 23:22:34

bunda1
Moderator
 
Группа: Moderators
Откуда: Латвия
Зарегистрирован: 09-02-2010
Сообщений: 4810
UA: Firefox 3.6

Re: Custom Buttons

Завтра исправлю.

Отсутствует

 

№507525-10-2012 15:17:09

sergio147
Участник
 
Группа: Members
Зарегистрирован: 23-10-2012
Сообщений: 2
UA: Chrome 22.0

Re: Custom Buttons

bunda1 пишет

sergio147Выделить кодКод:gBrowser.mTabContainer.addEventListener("mousedown", function (event) {
  if ( event.button == 1 && event.target.localName == "tab" ) {
       event.preventDefault();
       event.stopPropagation();
       alert("1");
       }
}, false);

bunda1 с alert ("1") работает, вот только зачем мне это окошко при нажатии на вкладку??? :usch:

Добавлено 25-10-2012 15:25:50

Dumby пишет

1. замени false на true
2. возможно event.preventDefault(); можно выкинуть
3. возможно нехватает удаления обработчика

UPD: Да и событие - «click», извиняюсь, поторопился...

Dumby,

а вот это работает!!! :cool:

Если что, все изменения внёс, но дело, явно, в true. Даже на разбирался, что это за аргумент, поверил на слово.

Спасибо! :blush:

Отредактировано sergio147 (25-10-2012 15:25:50)

Отсутствует

 

Board footer

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