diff --git a/chrome/content/zotero/tab.js b/chrome/content/zotero/tab.js index ab655332b1..c1ce5ca477 100644 --- a/chrome/content/zotero/tab.js +++ b/chrome/content/zotero/tab.js @@ -29,78 +29,83 @@ var ZoteroTab = new function() { this.onLoad = function() { + var me = this; + // find window this tab is loaded in - var windowMediator = Components.classes["@mozilla.org/appshell/window-mediator;1"] - .getService(Components.interfaces.nsIWindowMediator); - var enumerator = windowMediator.getXULWindowEnumerator("navigator:browser"); - while(enumerator.hasMoreElements()) { - var xulwin = enumerator.getNext().QueryInterface(Components.interfaces.nsIXULWindow); - var window = xulwin.docShell.QueryInterface(Components.interfaces.nsIInterfaceRequestor) - .getInterface(Components.interfaces.nsIDOMWindow); - var browserIndex = window.gBrowser.getBrowserIndexForDocument(document); - if(browserIndex !== -1) break; - } + this.containerWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) + .getInterface(Components.interfaces.nsIWebNavigation) + .QueryInterface(Components.interfaces.nsIDocShell) + .chromeEventHandler.ownerDocument.defaultView; + if(!this.containerWindow) return; - if(browserIndex === -1) return; + var tabs = (this.containerWindow.gBrowser.tabs + ? this.containerWindow.gBrowser.tabs : this.containerWindow.gBrowser.mTabs); - this.containerWindow = window; - this.containerBrowser = window.gBrowser.browsers[browserIndex]; - - // if we somehow ended up with other Zotero tabs in the window, close them - var numTabs = window.gBrowser.browsers.length; - for(var index = 0; index < numTabs; index++) { - if(index === browserIndex) continue; + // loop over all browsers in this window + var containerTab, containerBrowser; + for(var i=0; i