catturare, una sola volta, un evento al caricamento di una pagina da overlay.xul(.js)

10 views
Skip to first unread message

armando

unread,
Nov 27, 2009, 1:58:03 PM11/27/09
to XUL Italia - Public Discussions
Ciao a tutti, ho creato un estensione per mozilla....overlay.xul(js),
vorrei che venisse lanciata una mia funzione alla prima apertura di
mozilla e ad ogni nuova pagina/tab aperta.
Ho provato con

set collapsed(aValue)
{
if (aValue && this.mProgressBar.value != 100)
{
this.mProgressBar.value = 100;
}
carica();
},

ma questo mi lancia carica() per due volte ad ogni refresh della
pagina (compresa l'apertura del browser) ed una volta all'apertura di
un nuovo tab....
ho provato anche col catturare l'evento al caricamento degli elementi
DOM ma è la stessa cosa....

mi sapreste indicare quale evento fa per me??

armando

unread,
Nov 27, 2009, 2:43:08 PM11/27/09
to XUL Italia - Public Discussions
Ho risolto con:

function update() {
carica();
}

var NavLoadObserver = {
observe: function(aWindow)
{
update();
}
};

function start() {
var obs = Components.classes["@mozilla.org/observer-service;1"].
getService(Components.interfaces["nsIObserverService"]);
obs.addObserver(NavLoadObserver, "EndDocumentLoad", false);
}

window.addEventListener("load", start, false);

Davide Ficano

unread,
Nov 27, 2009, 2:48:43 PM11/27/09
to xulit-...@googlegroups.com
armando ha scritto:
La tua soluzione non mi piace molto preferisco usare FUEL, pero' in fondo l'importante e' che funziona

https://developer.mozilla.org/en/Toolkit_API/FUEL/fuelIWindow

Di seguito il codice per fare quello che ti serve

function onTabOpen(event) {
var theTab = event.data.tab;
Application.console.log("Tab opened");
}

var activeWin = Application.activeWindow;
activeWin.events.addListener("TabOpen", onTabOpen);

window.addEventListener("load", function(event) {
Application.console.log("Window opened");}, false);

Reply all
Reply to author
Forward
0 new messages