>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Поток для XPCOM компонента на каждую вкладку http://forum.mozilla-russia.org/viewtopic.php?id=30636 |
Kuvaldis > 02-02-2009 22:24:03 |
Всем привет. Пришел в разработку тулбара для Лиса после IE. Разрабатываю XPCOM компонент. Мне нужно отслеживать загрузку каждой вкладки. Возникли следующие проблемы: Но я не понимаю, как такое сделать для Лиса. Не ясно, как и где создать XPCOM объекты, подписаться на события ТОЛЬКО одной вкладки (динамически). Т.е. речь идет о nsIWebProgressListener. Т.е. мне нужен handler для событий в контексте и потоке окна закладки (НЕ браузера). Буду рад помощи. |
Elexander > 03-02-2009 12:24:02 |
Привет, Kuvaldis. Выделить код Код:function Proto(obj) { this.obj = obj; } function OnTabOpened(event) { var browser = event.target.linkedBrowser; var obj = Components.classes["my-xpcom-component"] .createInstance().QueryInterface(Components.interfaces.ImyInterface); browser.prototype = new Proto(obj); } const gMainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) .getInterface(Components.interfaces.nsIWebNavigation) .QueryInterface(Components.interfaces.nsIDocShellTreeItem) .rootTreeItem .QueryInterface(Components.interfaces.nsIInterfaceRequestor) .getInterface(Components.interfaces.nsIDOMWindow); const TabContainer = gMainWindow.getBrowser().mTabContainer; TabContainer.addEventListener("TabOpen", OnTabOpened, false); У browser есть webProgress, а у него можно подписаться на события посредством реализации nsIWebProgressListener. |
Kuvaldis > 10-02-2009 21:36:54 |
Elexander сиба, буду пробовать. |