>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Сделать что-то при загрузке содержимого страницы. http://forum.mozilla-russia.org/viewtopic.php?id=12054 |
Masletso > 23-08-2006 01:28:24 |
Приветсвую: Вот к примеру: Заранее спасибо. |
cesspit > 23-08-2006 19:32:30 |
Выделить код Код:const STATE_STOP = Components. interfaces. nsIWebProgressListener.STATE_STOP; const STATE_NETWORK = Components.interfaces.nsIWebProgressListener.STATE_IS_NETWORK; var progressListener= { QueryInterface: function (aIID) { if (aIID. equals (Components. interfaces. nsIWebProgressListener) || aIID. equals (Components. interfaces. nsISupportsWeakReference) || aIID. equals (Components. interfaces. nsIXULBrowserWindow) || aIID. equals (Components. interfaces. nsISupports)) return this; throw Components. results. NS_NOINTERFACE; }, onLocationChange:function (webProgress, request, location){}, onProgressChange:function(webProgress, request, curSelfProgress, maxSelfProgress, curTotalProgress, maxTotalProgress){}, onSecurityChange:function(webProgress, request, state){}, onStateChange:function(webProgress, request, stateFlags, status){ var STOP = (stateFlags & STATE_STOP) != 0; var NETWORK = (stateFlags & STATE_NETWORK) != 0; if (NETWORK && STOP) { //страница догрузилась (либо польз-ль нажал на стоп) //можно проверять url и выдавать сообщение } }, onStatusChange:function(webProgress, request, status, message){} }; getBrowser().addProgressListener(progressListener); по поводу переключения вкладок - нужно на событие подписаться, на какое я не знаю |
Masletso > 23-08-2006 21:36:39 |
Ого... стока всего из-за такой мелочи? Но спасибо.
ну я знаю есть событие select Выделить код Код:function pageSwitched(){ alert('You have changed tab'); } getBrowser().addEventListener("select", pageSwitched, false); а как добавить туда этот свитч? |
Masletso > 24-08-2006 12:51:57 |
а пример не работает ( |
Anton > 24-08-2006 15:00:43 |
1. Выделить код Код:window. addEventListener ("load", onloadTrap, true); function onloadTrap (event) { if ((event. originalTarget. nodeName == "#document") && (event. originalTarget. location. href == "http://testsite.ru/")) { alert ("ВЫ НА НАШЕМ САЙТЕ !!!"); } } 2. Выделить код Код:if (!window. tabSelectTrapUsed) { var cont = document. getElementById ("content"); window. tabSelectTrap = function (event) { var nn = event. originalTarget. nodeName; var an = event. attrName; var nv = event. newValue; if ((nn == "xul:tab") || (nn == "tab")) { if ((an == "selected") && (nv == "true")) { var cont = document. getElementById ("content"); var lb = event. originalTarget. linkedBrowser; if (lb. currentURI. spec == "http://testsite.ru/") { alert ("ВЫ НА НАШЕМ САЙТЕ !!!"); } } } } cont. addEventListener ("DOMAttrModified", window. tabSelectTrap, true); window. tabSelectTrapUsed = true; } как-то так в первом приближении.
Выделить код Код:const STATE_START = Components. interfaces. nsIWebProgressListener.STATE_START; ... getBrowser().addProgressListener(progressListener,STATE_START); так как будто правильней |
Masletso > 24-08-2006 15:52:37 |
спасибо, попробую позже |
Masletso > 24-08-2006 16:44:02 |
Работает, вто только проблема с тэбами. |
cesspit > 30-08-2006 14:05:44 |
странно, а у меня getBrowser().addProgressListener и без второго аргумента нормально привязывался когда подписываешься на события через getBrowser(), то события приходят: чтобы реагировать на события какой-либо конкретной вкладки надо, наверное, делать так: Выделить код Код:getBrowser().getBrowserForTab(SomeTab).addProgressListener(ProgressListener, STATE_START); тока проблема в том как найти эту вкладку. я когда подписывался на события вкладки сам их открывал: тебе же наверное придётся подписываться на событие открытия новой вкладки |
Masletso > 30-08-2006 14:46:52 |
сорри, но первый вариант потом заработал (ну тот который я сказал что глюк с тебами) |