Страницы: 1
Доброго времени суток.
Есть такая задача. Получить название всех вкладок мозиллы и соответственно сами ссылки этих вкладок.
Пытаюсь получить их с помощью EnumChildWindows. Ничего хорошего не выходит. при получении хендла возвращается пустое название окна.
Подскажите как можно разрешить эту проблему.
Заранее всем спасибо.
Отсутствует
На http://developer.mozilla.org смотрели документацию?
Do not meddle in the affairs of Wizards, for they are subtle and quick to anger.
Отсутствует
spaider84
сомневаюсь, что с помощью EnumChildWindows удастся получить что-то.
лучше открыть файл закладок "напрямую" из профиля и разпарсить его стандартными методами DOM
Отсутствует
spaider84
всё, что нужно с примерами можно найти в MDC
можно взять код прямо из кода браузера (вооружившитсь предварительно архиватором и хорошим редактором), это будет ещё проще
если бы сказали что и на каком языке пытаетесь написать, то советов было бы больше
Отредактировано shutnik (01-08-2007 09:47:35)
Отсутствует
spaider84
парсим profiles.ini компонентом для работы с ini-файлами (названия не знаю, но в стандартном комплекте компонентов он имеется) и определяем количество и местоположения профилей.
открываем bookmarks.html из каждого профиля (ну или как вы захотите) и парсим их компонентом для работы с xml-файлами (опть же, есть в стандартном наборе компонентов), получаем нужные данные.
полезная информация о профилях есть тут.
дополнительные вопросы лучше задать на форумах, посвящённых делфи.
Отсутствует
лучше открыть файл закладок "напрямую" из профиля и разпарсить его стандартными методами DOM
1. вкладки != закладки
2. даже если и нужны именно закладки (в чём я сомневаюсь), этот способ не подойдёт для fx3; там sqlite.
Отсутствует
Mash
2. даже если и нужны именно закладки (в чём я сомневаюсь), этот способ не подойдёт для fx3; там sqlite.
Нужны именно вкладки. Во второй версии создается временный файл. который описывает все сессию полностью. Поэтому в данном моменте проблема решена. А что такого в fx3? Можно поподробнее?
Отсутствует
Во второй версии создается временный файл. который описывает все сессию полностью.
1. Но имя его далеко не bookmarks.html, так ведь? Я говорил именно про bookmarks.html и про то, что хранение закладок в Fx3 отлично от Fx2.
2. О каком временном файле идёт речь? О sessionstore.js? Если да, то это не универсальное решение; начиная с того, что есть browser.sessionstore.enabled. Или речь о другом?
Добавлено Втр 07 Авг 2007 10:34:54 :
На картинке - то, что показал AccExplorer
Я мало знаком с Cpp и прочими Дельфями. Видимо, как-то надо добраться до MozillaContentWindowClass и достать нужные свойства.
М.б. ещё эта ссылка поможет -- http://wiki.mozilla.org/Accessibility/AT-Windows-API
Ну и гугл, mozilla.dev.accessibility
Отсутствует
2. О каком временном файле идёт речь? О sessionstore.js? Если да, то это не универсальное решение; начиная с того, что есть browser.sessionstore.enabled. Или речь о другом?
Речь идет о sessionstore.js.
Можно поподробнее про "MozillaContentWindowClass и достать нужные свойства"
Отсутствует
А если просто тупо сделать что-нибудь вроде
var tabs = document.getElementsByTagName('tab'); var tls = new Array; for(var i = 0; i < tabs.length; i++) { var tab = tabs[i]; if(tab.hasAttribute('class') && tab.getAttribute('class') == 'tabbrowser-tab') // или tab.getAttribute('class').match(/tabbrowser-tab/) – для верности tls.push(tab.getAtribute('label')); }
?
А вот с получением ссылок потруднее будет...
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher
да получить лучше так
var tabs = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator).getMostRecentWindow("navigator:browser").getBrowser().browsers; var arrUrls=new Array(); var arrTitles=new Array(); for(var index=0,length=tabs.length;index<length;index++){ arrUrls[index]=tabs[index].currentURI.spec; arrTitles[index]=tabs[index].contentTitle; } alert(arrTitles); alert(arrUrls);
только тут на делфи пишут
Отсутствует
Можно поподробнее про "MozillaContentWindowClass и достать нужные свойства"
Посмотрел бегло. У меня не получилось достать.
pAccessible->QueryInterface(IID_ISimpleDOMNode, (void**)&pSimpleDOMNode);
pSimpleDOMNode после этого пуст. Может и не так что делаю,.. не знаю, времени нет совершенно.
Попробуйте в сети поискать и на xpoint спросить, может там знающие люди найдутся и подскажут решение (и не обязательно связанное с MozillaContentWindowClass).
С другой стороны, если вас устраивает sessionstore.js, то почему бы и нет. Просто, afaik,
- хранение данных о сессии пользователь может отключить (browser.sessionstore.enabled);
- я не уверен в актуальности данных, получаемых таким способом (смущает browser.sessionstore.interval; надо код смотреть). Но могу и ошибаться.
Отсутствует
Можно поподробнее про "MozillaContentWindowClass и достать нужные свойства"
Суперклассинг стандартных GUI окон, оконная процедура каждого окна находится в экземпляре класса nsWinow.
при получении хендла возвращается пустое название окна.при получении хендла возвращается пустое название окна.
Что если попробовать отправить окнам, хендлы которых получает callback EnumChildWindows сообщение WM_GETTEXT ?
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Страницы: 1