From fbb7f796890800b9b490bbda570db5eff480a750 Mon Sep 17 00:00:00 2001 From: Simon Kornblith Date: Thu, 3 Feb 2011 05:35:47 +0000 Subject: [PATCH] appropriately handle case where tab is loaded before window finishes loading --- chrome/content/zotero/tab.js | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/chrome/content/zotero/tab.js b/chrome/content/zotero/tab.js index 769f785b8b..e498856ee8 100644 --- a/chrome/content/zotero/tab.js +++ b/chrome/content/zotero/tab.js @@ -41,23 +41,30 @@ var ZoteroTab = new function() if(browserIndex === -1) return; // initialize ZoteroPane and swap out old window ZoteroPane object - ZoteroPane.init(); - - // swap window ZoteroPane with ZoteroPane from tab - window.ZoteroPane_Overlay = window.ZoteroPane; - window.ZoteroPane_Tab = ZoteroPane; - window.ZoteroPane = ZoteroPane; + if(window.ZoteroPane) { + window.ZoteroPane_Overlay = window.ZoteroPane; + window.ZoteroPane_Tab = ZoteroPane; + window.ZoteroPane = ZoteroPane; + } else { + window.addEventListener("load", function() { + window.ZoteroPane_Overlay = window.ZoteroPane; + window.ZoteroPane_Tab = ZoteroPane; + window.ZoteroPane = ZoteroPane; + }, false); + } // get tab for browser var tab = window.gBrowser.tabs[browserIndex]; if(window.gBrowser.selectedTab === tab) { // if tab is already selected, init now + ZoteroPane.init(); ZoteroPane.makeVisible(); } else { // otherwise, add a handler to wait until this tab is selected var listener = function(event) { if(event.target !== tab) return; window.gBrowser.tabContainer.removeEventListener("TabSelect", listener, false); + ZoteroPane.init(); ZoteroPane.makeVisible(); } window.gBrowser.tabContainer.addEventListener("TabSelect", listener, false);