Страницы: 1
Доброго всем утра,
1. Есть у меня в тулбаре кнопка (type=menu) с широкой (85px по ширине, 20px по высоте) картинкой. При перемещении этой кнопки в окно Customise Toolbar от кнопки остаётся только название и дроп-маркер, а картинки нет. Как это исправить?
2. Как сделать так, чтобы при старте FF в окне Customise Toolbar уже были некие toolbaritem'ы?
Заранее спасибо.
Отсутствует
чтобы в Customise Toolbar был значок у кнопки, можно сунуть в chrome.manifes примерно такого вида
style chrome://global/content/customizeToolbar.xul chrome://myaddon/skin/customizeToolbar.css
и внего вписать id кнопки и картинку к нему. чтобы текст отображался под иконкой, можно добавить к ней класс toolbarbutton-1
чтобы вручную сунуть кнопку на тулбар, я использую такой код:
var navbar = document.getElementById("nav-bar"); var urlbar = document.getElementById("urlbar-container"); navbar.insertItem("mybutton", (urlbar && urlbar.parentNode == navbar ? urlbar : null), null, false); navbar.setAttribute("currentset", navbar.currentSet); document.persist(navbar.id, "currentset");
Отсутствует
2. Как сделать так, чтобы при старте FF в окне Customise Toolbar уже были некие toolbaritem'ы?
В оверлей на browser.xul добавить их как дочерние в элемент <toolbarpalette id="BrowserToolbarPalette">
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Заработало, спасибо. Но есть ещё вопрос: я при старте браузера навешиваю на элементы всякие события и т.д., и когда добавляется новый элемент через Customise Toolbar - новые элементы не работают (потому как не инициализированы). Это как-то можно обойти? События есть какие-нибудь?
Отсутствует
А xbl тут причём?
Отсутствует
я при старте браузера навешиваю на элементы всякие события и т.д., и когда добавляется новый элемент через Customise Toolbar - новые элементы не работают (потому как не инициализированы). Это как-то можно обойти? События есть какие-нибудь?
ммм. я не совсем понял о чём ты
при старте браузера вешаются события на кнопку, которой может не быть?
Отсутствует
Когда на элемент "навешивается" биндинг, управление получает конструктор биндинга. В нём можно выполнить все необходимые действия по инициализации элемента.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
И всё-таки простой способ есть:
var methodstr = BrowserToolboxCustomizeDone.toString(); if(methodstr.indexOf("myFunc") == -1) { methodstr = methodstr.substring(0, methodstr.lastIndexOf("}") - 1); methodstr += "var wm = Components.classes['@mozilla.org/appshell/window-mediator;1'].getService(Components.interfaces.nsIWindowMediator);" methodstr += "var mainwindow = wm.getMostRecentWindow('navigator:browser');"; methodstr += "if(mainwindow.myFunc) mainwindow.myFunc();"; methodstr += "}"; eval("BrowserToolboxCustomizeDone =" + methodstr); }
Грубо, зато работает.
при старте браузера вешаются события на кнопку, которой может не быть?
Имелось ввиду - при старте расширения.
Добавлено Wed Jul 2 00:32:39 2008 :
P.S. вышеприведённый код надо исполнять при инициализации расширения.
Отсутствует
Грубо, зато работает.
"Хак" это называется.
Кстати, в browser.js есть такие строки:
var toolbox = document.getElementById("navigator-toolbox"); toolbox.customizeDone = BrowserToolboxCustomizeDone;
откуда
var toolbox = document. getElementById ("navigator-toolbox"); var oldCustomizeDone = toolbox. customizeDone; toolbox. customizeDone = function myCustomizeDone (aToolboxChanged) { oldCustomizeDone (aToolboxChanged); // ... };
или
var toolbox = document. getElementById ("navigator-toolbox"); toolbox. customizeDone = (function (oldFunction) { return function (aToolboxChanged) { oldFunction (aToolboxChanged); // ... }; }) (toolbox. customizeDone);
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Тоже логичный выход. Но, что интересно, Яндекс в Яндекс.Баре решил делать по-моему
Отсутствует
Но, что интересно, Яндекс в Яндекс.Баре решил делать по-моему
От того, что разработчики Яндекс бара сделали расширение для Яндекса, потенциально ненадёжный подход не стал более надёжным.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Страницы: 1