Страницы: 1
У меня есть дерево, которое строится по RDF-источнику без всяких флагов. После щелчка по некоторому узлу дерева, мне нужно пройтись по всем потомкам узла и выполнить с ними определённые действия. Однако, если некий узел ещё не раскрывался, в DOM-дереве не существует представления его дочерних и далее элементов. Как заставить дерево достроить их?
Получается два инстанса Firefox. Они как-то связаны друг с другом или нет? Т.е. знают ли они о существовании другой запущенной копии?
Через nsIWindowMediator и nsIWindowDataSource можно добраться до всех открытых окон.
Нужно ловить событие DOMContentLoaded вместо load.
http://www.xulplanet.com/tutorials/mozsdk/observerserv.php
Посмотри http://cosmicat.com/extensions/firesomething/ - там, если я не ошибаюсь, производятся какие-то манипуляции с страницей about:.
Можно ещё попвтаться использовать глобальные извещения (global notifications). Есть такое извещение "quit-application", про которое скзано:
Called when the application is exiting. Listen for this topic to perform cleanup on exit.
Можно создать для него observer. См. http://www.xulplanet.com/tutorials/mozsdk/observerserv.php
Элемент меню выглядит примерно так:
<menuitem> <xul:hbox class="menu-iconic-left"> <xul:image class="menu-iconic-icon"> </xul> ... </menuitem>
Кантинка элемента меню отображается как раз в этом элементе image. Возможно в некоторых темах для классов menu-iconic-left или menu-iconic-icon выставлен display: none;.
А вообще, лучше посмотри через Инспектор DOM стили в chrome://browser/content/browser.xul
KML, спасибо, помогло.
По поводу удаления файла: http://lxr.mozilla.org/mozilla1.8/source/uriloader/exthandler/nsIExternalHelperAppService.idl#94
А чем в качестве уникального имени не подходит (new Date).getTime() + случайное число?
Как-нибудь можно получить версию расширения указанную в install.rdf или install.js?
Нужно отлавливать событие изменения атрибута selected вкладки. Что-то вроде такого:
getBrowser().addEventListener("DOMAttrModified", function(aEvent) { var node = aEvent.originalTarget; var name = node.nodeName; if (((name == "xul:tab") || (name == "tab")) && (aEvent.attrName == "selected") && (aEvent.newValue == "true")) { // Поймали текущую вкладку. } }, false);
Yan, спасибо.
Как из расширения получить активный (на котором фокус) элемент текущего документа?
var xml = document.implementation.createDocument('', 'myxml', null); xml.async = false; xml.load('file.xml');
Странно, у меня есть рабочее расширение, в котором используется именно этот способ. Кроме того хоть URI и read-only, но URI.spec - изменяемое свойство.
Не совсем понятно, Вы предлагаете заменять прямо в Subject:
первый способ влобовую не работает, со вторым пока не успел разобратся.
Долно работать такое:
observe: function(subject, topic, data) { subject.QueryInterface(Components.interfaces.nsIHttpChannel); subject.URI.spec = "http://127.0.0.1/1.gif"; }
Владимиp Палант
BlockSite работает проще, регистрирует observer'а для сообщения http-on-modify-request. Вот только я не нашел способа перенаправить запрос из такого observer'а.
Для решения задачи в таком обсервере достаточно заменить URI запроса. Но тут встаёт вопрос, как определить, что запрашивается картинка.
Как поймать момент открытия новой вкладки (в том числе и первой) в браузере?
Страницы: 1