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

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

№562616-01-2013 22:25:38

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

Re: Custom Buttons

Dumby
Страницу 73 прочёл и это интересно. Но что может вдруг сохранить ссылку на документ в данном случае не понял, вроде ничего не должно.

Но теперь о другом, есть код который у кнопки открывает меню с установленными поисковиками как в строке поиска и даёт возможность через это меню переключить текущий поисковик. Не мог бы ты добавить в это меню пункт Добавить поисковик... как в стандартном меню в строке поиска, ну который даёт возможность добавить поисковик с текущего сайта. Я сам пытался, но не получается, у пункта нет Id и команды или функции для запуска.

Выделить код

Код:

// Добавить контекстное меню с поисковиками для кнопки ......................................
function searchService() {
     return Components.classes["@mozilla.org/browser/search-service;1"].getService(Components.interfaces.nsIBrowserSearchService);
}

this.selectEngine = function(aNode, aEvent) {
     var engine = aEvent.target.engine;
     var ss = searchService();
     ss.currentEngine = ss.getEngineByName(engine.name);
     aNode.engine = engine;
     aNode.image = aEvent.target.getAttribute("src");
}

this.populateMenu = function(aNode) {
     var ss = searchService();
     var engines = ss.getVisibleEngines({ });
     const kXULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";

     while( aNode.firstChild && aNode.firstChild.localName != "menuseparator" ) {
            aNode.removeChild( aNode.firstChild );
            }

     for ( var i = engines.length - 1; i >= 0; i--) {
           var mi = document.createElementNS(kXULNS, "menuitem");
           mi.id = "cb-search-" + engines[i].name;
           mi.className = "menuitem-iconic searchbar-engine-menuitem";
           mi.setAttribute("label", engines[i].name);
           if ( engines[i].iconURI )
                mi.setAttribute("src", engines[i].iconURI.spec);
                mi.engine = engines[i];
           if ( mi.engine == ss.currentEngine )
                mi.style.fontWeight = "bold";
                mi.setAttribute("onclick",  "event.preventDefault(); event.stopPropagation(); parentNode.parentNode.selectEngine(parentNode.parentNode, event)");
           aNode.insertBefore(mi, aNode.firstChild);
           }
}

this.currentEngine = searchService().currentEngine;
var ss = searchService();
this.engine = ss.currentEngine;
this.image = this.engine.iconURI.spec;

var mp = this.appendChild( document.createElement("menupopup") );
mp.setAttribute("onpopupshowing", "parentNode.populateMenu(this)");
mp.setAttribute("oncommand", "event.stopPropagation()");

var managerSeparator = mp.appendChild( document.createElement("menuseparator") );
managerSeparator.id = "cb-searchbutton-separator"
var managerItem = mp.appendChild( document.createElement("menuitem") );
managerItem.setAttribute("label", "Управление поисковыми системами…");
managerItem.setAttribute("oncommand", "openDialog('chrome://browser/content/search/engineManager.xul', " + "'engineManager', 'chrome, dialog=no')");
this.type = "menu-button";

Отсутствует

 

№562716-01-2013 23:37:33

fil
Участник
 
Группа: Members
Зарегистрирован: 14-10-2012
Сообщений: 18
UA: Firefox 18.0

Re: Custom Buttons

okkamas_knife

Есть бот. Берет инфу из текстового файла и раскидывает ее по полям ввода страницы чужого сайта. Эти поля находятся на разных страницах/формах. Для перехода между страницами/формами бот имитирует click'и на кнопках. Соответственно, после каждого click'а требуется определение завершения операции загрузки новой страницы/формы (временные задержки могут быть разными). Вопрос в том как сделать эту проверку. В цикле с таймером нельзя.. Логично использовать цикл в котором создается самозакрывающееся модальное окно

Отсутствует

 

№562817-01-2013 00:00:03

fil
Участник
 
Группа: Members
Зарегистрирован: 14-10-2012
Сообщений: 18
UA: Firefox 18.0

Re: Custom Buttons

okkamas_knife

Смотрел. Но, признаться, ничего подходящего там не нашел.

Отсутствует

 

№562917-01-2013 02:41:47

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

Re: Custom Buttons

bunda1 пишет

Не мог бы ты добавить в это меню пункт Добавить поисковик...

Ох, даже незнаю, если хоть немного работает, попробуй доделать...

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

Выделить код

Код:

// Добавить контекстное меню с поисковиками для кнопки ......................................
function searchService() {
     return Components.classes["@mozilla.org/browser/search-service;1"].getService(Components.interfaces.nsIBrowserSearchService);
}
_a = searchService();

this.selectEngine = function(aNode, aEvent) {
     var engine = aEvent.target.engine;
     var ss = searchService();
     ss.currentEngine = ss.getEngineByName(engine.name);
     aNode.engine = engine;
     aNode.image = aEvent.target.getAttribute("src");
}

this.populateMenu = function(aNode) {
     var ss = searchService();
     var engines = ss.getVisibleEngines({ });
     const kXULNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";

//----------------------------------------------------------------------------------
//     while( aNode.firstChild && aNode.firstChild.localName != "menuseparator" ) {
       while( aNode.firstChild && aNode.firstChild != managerSeparator ) {
//----------------------------------------------------------------------------------
            aNode.removeChild( aNode.firstChild );
            }

     for ( var i = engines.length - 1; i >= 0; i--) {
           var mi = document.createElementNS(kXULNS, "menuitem");
           mi.id = "cb-search-" + engines[i].name;
           mi.className = "menuitem-iconic searchbar-engine-menuitem";
           mi.setAttribute("label", engines[i].name);
           if ( engines[i].iconURI )
                mi.setAttribute("src", engines[i].iconURI.spec);
                mi.engine = engines[i];
           if ( mi.engine == ss.currentEngine )
                mi.style.fontWeight = "bold";
                mi.setAttribute("onclick",  "event.preventDefault(); event.stopPropagation(); parentNode.parentNode.selectEngine(parentNode.parentNode, event)");
           aNode.insertBefore(mi, aNode.firstChild);
           }

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

    var engines = gBrowser.mCurrentBrowser.engines;
    if (!(engines && engines.length)) return;

    var sep = document.createElement("menuseparator");
    sep.id = "cb-search-addengine-separator";
    aNode.insertBefore(sep, managerSeparator);

    for (var i = 0; i < engines.length; i++) {

        var engine = engines[i];

        var menuitem = document.createElement("menuitem");
        menuitem.setAttribute("id", "cb-search-addengine-engine-" + (i + 1));
        menuitem.setAttribute("class", "menuitem-iconic addengine-item");
        menuitem.setAttribute("tooltiptext", engine.uri);
        menuitem.setAttribute("uri", engine.uri);
        menuitem.setAttribute("title", engine.title);
        menuitem.setAttribute("label", "Добавить «" + engine.title + "»");
        if (engine.icon) menuitem.setAttribute("src", engine.icon);

        var command = '\
\
Cc["@mozilla.org/browser/search-service;1"]\
.getService(Ci.nsIBrowserSearchService)\
.addEngine(\
event.originalTarget.getAttribute("uri"), \
Ci.nsISearchEngine.DATA_XML, \
event.originalTarget.getAttribute("src"), \
true);'
        menuitem.setAttribute("oncommand", command);

        aNode.insertBefore(menuitem, managerSeparator);
    }
//------------------------------------------------------------------------------
    
}

this.currentEngine = searchService().currentEngine;
var ss = searchService();
this.engine = ss.currentEngine;
this.image = this.engine.iconURI.spec;

var mp = this.appendChild( document.createElement("menupopup") );
mp.setAttribute("onpopupshowing", "parentNode.populateMenu(this)");
mp.setAttribute("oncommand", "event.stopPropagation()");

var managerSeparator = mp.appendChild( document.createElement("menuseparator") );
managerSeparator.id = "cb-searchbutton-separator"
var managerItem = mp.appendChild( document.createElement("menuitem") );
managerItem.setAttribute("label", "Управление поисковыми системами…");
managerItem.setAttribute("oncommand", "openDialog('chrome://browser/content/search/engineManager.xul', " + "'engineManager', 'chrome, dialog=no')");
this.type = "menu-button";

P.S Кстати, как там с этим, любопытно же :whistle:

Отредактировано Dumby (17-01-2013 06:14:26)

Отсутствует

 

№563017-01-2013 14:39:38

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

Re: Custom Buttons

Dumby пишет

Хочу снова пожаловаться на Windows-Блокнот :)

Dumby пишет

Ожидаются ли какие-нибудь негативные последствия такого вмешательства,
или можно так оставить ?

Да никаких, если только какие-нибудь текстовые редакторы на других операционных системах принципиально не хотят воспринимать формат новой строки, принятый в Windows. :)
Подправил.


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

Отсутствует

 

№563117-01-2013 15:49:12

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

Re: Custom Buttons

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


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

Отсутствует

 

№563217-01-2013 17:39:33

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

Re: Custom Buttons

Infocatcher
Спасибо.

Infocatcher пишет

return this.appInfo = Components.classes["@mozilla.org/xre/app-info;1"]
                   .getService(Components.interfaces.nsIXULAppInfo);

:/ что-то у меня на десятке какая-то нездоровая разница наблюдается.

Отсутствует

 

№563317-01-2013 18:36:13

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

Re: Custom Buttons

Dumby
Кто-то ранее запросил у Components.classes["@mozilla.org/xre/app-info;1"] интерфейс nsIXULRuntime.
Вот так, например:

Выделить код

Код:

var appInfo = Components.classes["@mozilla.org/xre/app-info;1"]
    .getService(Components.interfaces.nsIXULAppInfo)
    .QueryInterface(Components.interfaces.nsIXULRuntime)

А так все соответствует, вроде:
nsIXULAppInfo + nsIXULAppInfo.idl
nsIXULRuntime + nsIXULRuntime.idl
Только вот документацию не обновили. :/

Добавлено 17-01-2013 18:37:36
А, ну и nsICrashReporter еще, там же написано все. :)

Отредактировано Infocatcher (17-01-2013 18:37:36)


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

Отсутствует

 

№563417-01-2013 21:42:15

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

Re: Custom Buttons

Dumby пишет

Ох, даже незнаю, если хоть немного работает, попробуй доделать

Спасибо работает :) :/ :/
Но работает только если строка поиска находится на панели ну да ладно поиск можно скрыть через Css.

Добавлено 17-01-2013 21:49:57

Dumby пишет

P.S Кстати, как там с этим, любопытно же :whistle:

А вот с этим плохо, не помогло. Мистика какая то с этими кириллическими доменами на XP:

Если сохранить ярлык просто перетягивая его с адресной строки FF17 на рабочий стол или моей кнопкой то FF его не открывает:
FF17 -

Выделить код

Код:

[InternetShortcut]
URL=http://:B>.@D/
IDList=
HotKey=0
IconFile=C:\Documents and Settings\d�鲲

Kнопкой-

Выделить код

Код:

[InternetShortcut]
URL=http://:B>.@D/

thumbpvy.jpg


Если сохранить ярлык используя Internet Explorer 7 то все прекрасно открывается в FF:
Сокращено:

Выделить код

Код:

[InternetShortcut]
URL=http://лі®.сІ­Ќ
[InternetShortcut.A]
URL=http://лі®.сІ­Ќ
[InternetShortcut.W]
URL=http://+BDoEQgQ+-.+BEAERA-/

Если перенести текст из ярлыка который создавался используя Internet Explorer 7 в ярлык от FF то он тоже прекрасно открывается но непонятно как создать такой ярлык с правильным текстом используя CB кнопку.

Отредактировано bunda1 (17-01-2013 22:04:07)

Отсутствует

 

№563517-01-2013 22:40:27

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

Re: Custom Buttons

Dumby
Хорошо что ты спросил.  С 'Punycode' ярлыки все таки открывает кириллические домены, похоже что у меня профиль сломан, извиняюсь :)
Отсюда мораль, что надо быть осторожней с Red Bull и коктейлями :usch:

Отредактировано bunda1 (17-01-2013 22:54:54)

Отсутствует

 

№563620-01-2013 05:31:41

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

Re: Custom Buttons

По примеру переноса кнопки раширения noscript из панели дополнений в urlbar

скрытый текст
var urlbar = document.getElementById("urlbar-icons");
var noscript = document.getElementById("noscript-tbb");
urlbar.insertBefore(noscript, urlbar.lastChild);

создал кнопку таким образом
скрытый текст
var urlbar = document.getElementById("urlbar-icons");
var button = document.getElementById("custombuttons-button92");
urlbar.insertBefore(button, urlbar.lastChild);/*Initialization Code*/

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


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

Отсутствует

 

№563720-01-2013 14:49:01

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

Re: Custom Buttons

villa7 пишет

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

Я проверил этот код на FF18 и таково глюка не заметил, не понятно в чем тут дело. Наверно тут глючит другой код.
Код перемещает кнопку рядом с иконками в адресной строке может при удалении, добавлении любой кнопки в навигационной панели, иконки с адресной строки тоже перемещаются и custombuttons-button92 вместе с ними.

Отсутствует

 

№563820-01-2013 15:28:44

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

Re: Custom Buttons

okkamas_knife
Никак не разберусь что в этом коде куда подставлять,

скрытый текст
var this_=this;

function movetostatusbar(){this_.classList.remove("toolbarbutton-1");
document.getElementById("statusbar-display").appendChild(this_);
}
setTimeout(movetostatusbar, 500);


перепробовал кучу вариантов, никак. Нужно в urlbar кнопку с id "custombuttons-button92" может подскажешь.

bunda1
У меня перемещает вот так и глючит, других иконок в адресной строке у меня нет.
http://s54.radikal.ru/i145/1301/01/216a5f14f647.jpg


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

Отсутствует

 

№563920-01-2013 15:44:43

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

Re: Custom Buttons

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

Отсутствует

 

№564020-01-2013 15:50:43

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

Re: Custom Buttons

bunda1
Кнопки масштаба и памяти всегда на месте, перемещается только кнопка 
Искать текст из адресной строки


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

Отсутствует

 

№564120-01-2013 16:08:38

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

Re: Custom Buttons

villa7 пишет

bunda1
Кнопки масштаба и памяти всегда на месте, перемещается только кнопка 
Искать текст из адресной строки

Эту кнопку не так просто создать в адресной строке.
Попробуй переместить свой код перед кодом создающим кнопку масштаба в ту кнопку где он находится + рестарт.

Отсутствует

 

№564220-01-2013 16:58:43

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

Re: Custom Buttons

bunda1
Попробовал переместить перед кодом масштаба, теперь переместилась вот так
http://s019.radikal.ru/i637/1301/5d/c6cb1fc432d0.jpg
но все равно если перемещать другие кнопки то кнопка из адресной строки самопроизвольно перемещается. Ладно, пусть так остается, не так уж часто я кнопки перемещаю, буду вытаскивать каждый раз, не переломлюсь. Всем спасибо за участие и помощь.


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

Отсутствует

 

№564320-01-2013 20:15:51

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

Re: Custom Buttons

okkamas_knife пишет

ну вот же
закидывай в инициализацию

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


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

Отсутствует

 

№564420-01-2013 22:05:24

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

Re: Custom Buttons

okkamas_knife
Создал кнопку только с кодом перемещения на чистом профиле, в urlbar перемещается, но после перезагрузки браузера пропадает, появляется опять в urlbar только после вызова настройки панелей инструментов, и так до следующей перезагрузки браузера. Ладно пусть будет как есть, переживем, спасибо за советы.


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

Отсутствует

 

№564520-01-2013 22:46:45

WatsonRus
Участник
 
Группа: Members
Зарегистрирован: 10-03-2009
Сообщений: 286
UA: unknown 0.0

Re: Custom Buttons

Может кто посмотреть и проверить - что-то эта кнопка сохранения в MHT (с помощью MAFF) в 17.0.2 ESR не фурычит... ничего вообще не происходит.

Выделить код

Код:

var settypearc=1;// 1-mht 5-maf
custombuttons.setPrefs("extensions.maf.current.save.filterindex", settypearc);
mafSaveDocument(getBrowser().selectedBrowser.contentDocument,{mafAskSaveArchive: true})

MAFF последний.

Отредактировано WatsonRus (20-01-2013 22:48:20)


Firefox ESR

Отсутствует

 

№564620-01-2013 22:55:54

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

Re: Custom Buttons

okkamas_knife пишет

мой совет возьмите тот же портабельный фф и попробуйте настроить его с нуля

Попробую, спасибо.


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

Отсутствует

 

№564721-01-2013 14:53:49

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

Re: Custom Buttons

WatsonRus

А если так ?

Выделить код

Код:

const archiveType = 1; // 1-mht, 0-maff.
custombuttons.setPrefs("extensions.maf.current.save.filterindex", archiveType);
MafCommandsOverlay.savePageInArchive();

Отсутствует

 

№564821-01-2013 16:26:24

WatsonRus
Участник
 
Группа: Members
Зарегистрирован: 10-03-2009
Сообщений: 286
UA: Firefox 17.0

Re: Custom Buttons

Dumby пишет

WatsonRus

А если так ?

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

Отредактировано WatsonRus (21-01-2013 16:31:40)


Firefox ESR

Отсутствует

 

№564921-01-2013 22:29:29

laprad
Участник
 
Группа: Members
Зарегистрирован: 31-03-2012
Сообщений: 22
UA: unknown 0.0

Re: Custom Buttons

Можно ли создать кнопку, единственной функцией которой будет эмулирование нажатия горячей клавиши (например Shift+Ctrl+F12) ? Если да - не отказался бы от примера кода.
Кнопка нужна в дополнение к дополнению Shelve - для выполнения профиля сохранения страничек можно выбрать горячую клавишу, но раскорячивать пальцы на клаве не хочется, single-click кнопка удобнее.
спасибо

Отсутствует

 

№565022-01-2013 08:53:00

laprad
Участник
 
Группа: Members
Зарегистрирован: 31-03-2012
Сообщений: 22
UA: unknown 0.0

Re: Custom Buttons

laprad
смотрим какая функция вызывается по тому хоткею и закидываем её в кнопку

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

Отсутствует

 

Board footer

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