Страницы: 1
Спасибо за ссылку, помогло. :)
StepanM пишета то load приходит несколько раз на одну вкладку
не должно такого быть, там наверное фреймы есть. их надо фильтровать
Ошибка была в том, что я коннектился к "content" элементу - это tabbrowser, а нужно было, как ты правильно говорил в самом начале, к "appcontent". Теперь можно отслеживать, какому документу соответствуют события DOMContentLoaded и unload: соответствующий eventTarget кастится к nsIDOMHTMLDocument. Замечено, что на каждый документ приходит всегда ровно один DOMContentLoaded и unload. Для каждого дополнительного фрейма будет дополнительно еще одно событие DOMContentLoaded (unload).
Осталось научиться загружать страничку в новой вкладке из C++. Может, есть у кого-нибудь наработки? Не могу найти даже способ получить window.getBrowser() из C++.:/
…Shutnik в обсуждении темы про отлов события загрузки документов во всех табах кинул ссылку:
https://developer.mozilla.org/En/Code_s … _page_load
Там в самом низу есть пример кода, позволяющего определять, запущено ли расширение первый раз. Видимо, ключевым здесь является объект http://www.xulplanet.com/references/xpc … nces1.html, позволяющий с помощью интерфейса IPrefBranch настраивать окружение.
Спасибо вам всем. Очень полезная оказалась информация. В частности, получилось подключиться к событиям таббраузера с помощью C++ в xpcom-компоненте.
Хочется отлавливать еще и другие события - появление новой вкладки за одно сообщение, а то load приходит несколько раз на одну вкладку :( Кто-нибудь знает, где посмотреть какие события могут быть у элемента? Стандартный список на xulplanet выглядит неполным.
И еще вопрос: какие интерфейсы реализует tabBrowser? Хочется создавать новую вкладку и загружать в ней новый html по uri прямо из C++ компонента. Как это можно сделать?
Спасибо.
Я только поменял "appcontent" на "content" (tabbrowser)Выделить кодКод:
function NewSite (event) { ... } document.getElementById("content").addEventListener("select", NewSite, true); document.getElementById("content").addEventListener("load", NewSite, true);
Уважаемый Яковчук!
Удалось ли таким образом решить проблему в nsAString::BeginReading?
У меня не решается. Сравнил заголовочные файлы для работы со строками в версиях 1.9.0.3 и 1.8.0.4. Выяснил, что раньше BeginReading была inline :). Скопировал реализацию в новую версию nsStringAPI.h и все собралось и даже правильно работает. Но что-то мне подсказывает, что это нечестный способ.
Кстати для работы всего остального достаточно двух макросов XP_WIN и XP_WIN32, а также только трех lib'ок (nspr4, xpcom, xpcomglue_s). Ну это для того, чтобы разрешить все Ваши unresolved ссылки (может, кроме nsHandyPassword - про него ничего не знаю).
Страницы: 1