Qualcosa continua a non funzionare, continua ad aprirne tante. Questo è tutto il codice che uso per aprire la finestra, tieni conto che faccio un controllo per far in modo che il popup mi si apra solo su determinate pagine internet non su tutte.
function LoadTagRecommender(){
var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIWebNavigation)
.QueryInterface(Components.interfaces.nsIDocShellTreeItem)
.rootTreeItem
.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIDOMWindow);
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interfaces.nsIWindowMediator);
var enumerator = wm.getEnumerator("navigator:browser");
var myWin = null;
var URLCorrente = mainWindow.getBrowser().selectedBrowser.contentWindow.location.href;
var siteurl = URLCorrente.split("/");
var xpath= "";
var single = false;
if ( mainWindow.getBrowser().selectedBrowser.contentWindow.location.href.indexOf("issues/entry")!=-1|| mainWindow.getBrowser().selectedBrowser.contentWindow.location.href.indexOf("issues/bulkedit?ids=")!=-1) {
while(enumerator.hasMoreElements() && !myWin) {
var win = enumerator.getNext();
if (win.location.href == "chrome://tagrecommender/content/tag.htm")
myWin = win;
}
if (myWin)
myWin.focus();
else{
num = siteurl.length-3;
nameproject = siteurl[num];
intLeft = screen.availWidth - 40 - popupWidth;
intTop = (screen.availHeight / 2) - (popupHeight / 2);
popup = window.open( "chrome://tagrecommender/content/tag.htm", "TagRecommender", "status = 1, height = "+ popupHeight +", width = "+ popupWidth +", resizable = 1, scrollbars=yes,top="+intTop+",left="+intLeft );
}} else {
alert("This plugin works only for adding a new ticket\n"+
"or editing a ticket .");
}
}
Ho inserito il while nell'if, prima ho provato anche fuori dall'if, ma il risultato non cambia, mi apre sempre più finestre. Esegue sempre e cmq ad ogni clic il comando window.open. Ho provato ad inserire un else nel caso in cui non trovasse la finestra , ma niente apre sempre la finestra.