Ненене) все оказалось намного проще ;) у меня 2 элемента с таким ID ;)))))
Тему можно закрывать.
А не, соврал, в DomInspector атрибут есть, однако галки все равно нет :(
Приветствую всех
Вот наткнулся на странную проблему:
Имею меню что-то типа:
<menupopup id="fvd_single_tools_popup_menu" onpopupshowing="return fvd_single.tools_menu_showing(event)"> <menuitem id="fvd_single_js_enabled" type="checkbox" autocheck="false" label="&txt.tools_popup.javascript.title;" oncommand="alert(1)" /> <menuitem label="&txt.tools_popup.check_ip.title;" oncommand="" /> <menuitem label="&txt.tools_popup.speed_test.title;" oncommand="" /> <menuitem label="&txt.tools_popup.whois.title;" oncommand="" /> </menupopup>
и код к нему
[code]
this.tools_menu_showing = function(event)
{
try
{
var val = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch).getBoolPref('javascript.enabled');
var it = document.getElementById('fvd_single_js_enabled');
Просто подумалось что медленно будет работать. Вот примерно что получилось:
Функция, рекурсивно обрабатывающая стандартные деструкторы:
[code] function xbl_destructor_bugfix(event)
{
if (event.originalTarget.nodeName == 'opwidget')
{
// ok, we needs call desructor recursion
// but have some problems... $)
var binded_to = document.defaultView.getComputedStyle(event.originalTarget, null).getPropertyValue('-moz-binding');
var get_url = binded_to.match(/url\((\'|\")?(.*?)\1?\)/mi);
if (get_url != null)
{
// current binding founded
var bind_params = get_url[2].match(/([^\#]+)#(.*)/mi);
if (bind_params != null)
{
var bind_to_url = bind_params[1];
var bind_to_section = bind_params[2];
var ajax = Components.classes['@mozilla.org/xmlextras/xmlhttprequest;1'].createInstance(Components.interfaces.nsIXMLHttpRequest);
ajax.open('GET', bind_to_url, false);
ajax.send(null);
if ((ajax.responseXML != null) && (ajax.respons
Мысль пришла по поводу слежения - если попробовать слушать DOMNodeRemoved и в нем фильтровать свои элементы с xbl, дергать у них свой метод destroy или что-то подобное ? Такое вообще реально ? :)
Так, гуглом установлено что это баг - https://bugzilla.mozilla.org/show_bug.cgi?id=230086 :( очень древний.
Можно попробовать вынести деструктор в метод и вызывать самостоятельно, но это очень неудобно и не всегда уследишь + как быть с расширяемыми XBL ? (т.е. один - расширение второго) ?
Приветствую всех читающих. :D
Дебажил свой экстеншин и заметил в нем аномальное поведение xbl.
По мануалу - при установке связки должен вызваться constructor, а при удалении - destructor.
На практике - конструктор срабатывает, деструктор нет. Если связку не убирать с элемента, то при закрытии браузера деструктор срабатывает. Если связаный элемент удалить (типа removeChild), то связка с него не отваливается и деструктор не вызывается (т.е. элемент пропадает, браузер закрываешь, деструктор не вызывается).
Собственно хотел поинтересоваться - это баг ? Можно как-то сделать чтобы деструктор вызывался автоматический ?
Не знаете, есть ли возможность зарегистрировать компонент в любой момент из любой папки и пользоваться ?
Такой возможности нет, и она обычно не нужна. Можно подгружать JS-скрипты через mozIJSSubScriptLoader.
А зачем вам это нужно?
Хочу забиндить XBL на кнопочку, и чтобы она сразу подняла глобальное хранилище для других копий браузера (если их вдруг начнут запускать) или приципилась уже к существующему хранилищу. Вся "прелесть" в том чтобы можно было подключать XBL подтянутые из сети (изображаю "плагины" для расширений). Плагины могут быть разные и сразу не угадаешь какие будут... поэтому одинаковые хранилища для всех не подойдут. Вот ищу как это сделать без XPCOM или возможность как это сделать налету.
Может имеет смысл покопать в сторону расширений, которые ставятся в папку приложения (и доступны во всех профилях)?
Это несколько не то. Т.е. расширения то доступны, но данные в них не общие.
Попробуйте посмотреть расширение Clippings.
Посмотрел, автор сделал, как предлагает Crazy-EyE.
Crazy-EyE
Посмотрел\почитал. Примерно это меня и интересует, однако не совсем подходит в моем случае. Как я понимаю XPCOM компоненты регистрируются в момент установки расширения, подхватываясь браузером из папки /components? Не знаете, есть ли возможность зарегистрировать компонент в любой момент из любой папки и пользоваться ?
Если данных мало, и они не накапливаются, то nsIPrefBranch (что то вроде реестра виндоус, только для всех операционных систем). Записи в этом "реестре" можно увидеть по адресу about:config
Иначе: nsILocalFile. Просто записывать в общий фаил.
Данных не очень много, но реализовывать свою БД на файлах желания не много. Поднимать sqlite тоже не хочется, т.к. данные быстро устаревают и нуждаются в динамичном обновлении ;(
Что за данные-то хоть?
Да вообще теоретический вопрос. Сейчас данные - урлы \ ключи-хеши \ информация о страницах по урлам \ статистика всякая. Ну и нелогично когда статистика в одном тулбаре одна, а в соседнем окне другая ;(
Сейчас вот проверку почтовых ящиков делаю на новые сообщения на XBL, ну и глупо как-то получится, если каждый тулбар будет лазить и почту проверять... Хочется по нормальному, но пока не придумал как.
…Доброй ночи, уважаемые форумчане.
Вот задался вопросом, как менее криво можно изобразить хранилище данных в тулбаре? У меня тулбар получает данные с сервера, а поскольку пользователь может запусть 2 Firefox - тулбара станет 2... .а копия данных должна быть одна. Сейчас у меня каждый тулбар имеет свое хранилище и после получения данных тулбар посылает уведомление обсерверам остальных тулбаров (в других процессах фф), передавая им данные. При изменении \ удалении данных тулбар сообщает всем остальным своим копиям что сделать надо ;) вообщем такой велосипед получился и он мне не нравится. Скажите, есть ли способы сделать что-то общее одно?
Не получилось у меня сделать это на description (text-decoration: underline), поэтому зафигачил html ссылки в xul - на них почему-то все нормально выставляется ;)
Всем откликнувшимся спасибо! ;)
в userChrome.css
Вот это как раз не то. У меня вообще предположения что с правами какие-то проблемы или типа того? Может FF не дает перекрывать какие-то стандартные конструкции в css.
Добавлено Fri Sep 5 15:33:21 2008 :
Имелось ввиду из своего экстеншина.
Работает, но портит внешний вид – потом нужно вручную подкручивать стили.
да, действительно работает ;) правда не на все.
При наведении на элемент сверху появляется какой-то прямоугольник ;) (причем не во всех темах) Убрать никак не получилось.
Поставить text-decoration: underline на дочернем description тоже не получается (хотя и -moz-appearance: none !important; и евенты разрешал ... (хотя курсор перекрылся легко)).
Ни в одном расширении ничего такого не сделано разве?
Ну может и сделано, только чтобы в меню - я не нашел. Назовите парочку расширений для просмотра ?
Это единственный способ или есть какие-то еще ? :)
Приветствую всех форумчан-девелоперов ;)
А не знает ли кто как изменить background-color \ background-image для элементов меню из экстеншина FF? Я слышал в теме такое можно сделать. А можно ли для своего меню в экстеншине сделать такое без тем ?
попробовал так:
#my_menu > menuitem
{
background-color: #000 !important;
cursor: pointer !important;
}
ничего не меняется %( т.е. color применить можно, а фон и все на hover - нет :(
Может знаете почему не работает ?
Добавлено Thu Sep 4 15:27:04 2008 :
Так же не удается ничего сделать с menuseparator - он вообще ни на какие стили не реагирует :(
Подскажите кто-нибудь пожалуйста где копать? В темах уже глядел. .. :(
А флэшовый не умеет?
Нет, он только swf подхватывает :|
Еще можно попробовать альтернативы флэшплагина - gnash.
Тут ставка делается на публичные средства воспроизведения. Т.е. в виндах ФФ сам наверное поставит flash, а в пингвине люди сами его ставят ручками. Далее через flash -> flashplayer -> flv
Если это вопрос выбора формата - стоит обратить внимание на формат видео, которое поддерживается (или только собирается - не помню точно) Лисом - когда-то про такое писали, но конкретики не помню.
К сожалению выбора формата передо мной не стоит - форматы уже есть, надо просто на чем-то играть. Дефолтные установленые плагины для ФФ скорее всего будут и в пингвине, но для flv просто нет плагина :( зато есть куча флеш плееров для проигрывания видео. Наверное придется через плеер все это запускать.
Нашел пару статей:
http://www.alistapart.com/articles/flashsatay
http://www.alistapart.com/articles/byebyeembed
Тут все замечательно, только не ясно как флеш видео flv проиграть. Т.е. обязательно тащить с собой плеер или можно как-то без него ?
Приветствую всех собравшихся еще раз! ;-)
А не подскажет ли кто, как проиграть видео из URL форматов flv, asf или wmv ? Под Windows это можно сделать медиаплеером, но как оно будет работать в Linux я не знаю (а хотелось бы). Можно ли заставить Firefox показать видео встроенными средствами ?
Так пологаю надо смотреть в сторону тега embed ? Если так, то будет ли браузер автоматический предлагать загрузить нужные плагины для embed ?
нужно добавить атрибут allowevents="true"
А ;) а я его к menuitem сначала добавил, поэтому наверное не работало. Действительно атрибут на image помог - все заработало. Так же сами заработали css - menuitem > image:hover.
Спасибо большое ;)
через originalTarget поймать реально нажатый элемент
К сожалению originalTarget все время указывает на menuitem. Может какие-нибудь атрибуты надо в menuitem ?
:hover на manuitem'е тоже должен рабтать
Ну на нем он может и работает (не проверял), а на image в нем - нет :(
Может еще какие варианты есть ?
Приветствую всех форумчан.
Возникла у меня такая проблема - надо сделать многострочный текст в меню и рядом иконку (типа кнопки). По клику на элемент меню и на иконку должны происходить разные действия. Накидал что-то вроде
<popup> <menuitem align="start"> <description flex="2">Ля ля ля</description> <spacer flex="1" /> <image /> </menuitem> </popup>
Иконка отображается, многострочности тоже добился, однако поймать клик с иконки не получается, т.к. никакие эвенты не проходят. Так же не работают :hover на иконке и курсор никак не перекрывается :(
Собственно как поймать клик с image ?
т.е. тултип надо отдельно создать и таким образом показывать, а с обычным tooltiptext ничего сделать нельзя ?
Приветствую всех собравшихся )
Проблема у меня такая - генерирую меню по хмл динамический и вешаю на кнопку (type="menu-button"). Все бы ничего, но у элементов не содержащих tooltiptext показывается предыдущий всплывавший тултип. Если ничего не всплывало - показывается маленький прямоугольничек. Атрибуты tooltiptext или tooltip я не добавлял, по DOM Inspector их тоже нет, но тултип всплывает. Пытался заглушить его создавая пустой тултип и вешая на tooltip - всплывают вдвоем ;) Подскажите кто-нибудь как справиться с тултипом ?
Доброе утро! ;) А не подскажет ли кто, как можно выкинуть попуп меню в любое время в нужном
месте ?
showPopup - интересное глюкало - иногда показыватеся вовсе не где надо ;( (иногда например ниже пикселов на 20)
атрибут popup на элементе меня бы устроил, но он показывает меню, когда я щелкаю на элемент... (мне надо под textbox показывать). При подсовывании popup на ходу и убирании при потере фокуса контрол при потере фокуса больше не активируется ;-) (может что делал не так, или руки кривые). .. .
Хочется чтобы это все работало в ФФ 1.5 - 2 №)