Проблема в том, что даже когда вы создаете изменяемый массив, вы сохраняете ссылку на этот объект массива в переменной в контексте XUL, который его создает. Из другого XUL вы не видите эту переменную, поэтому не можете получить доступ к массиву.
Существует несколько решений для доступа к объекту в разных контекстах:
Из одного из контекстов получите ссылку на другой контекст. Например, у вас есть переменная, определенная в главном окне (наложение browser.xul), вы можете получить ее из боковой панели, используя менеджер окон, чтобы получить ссылку на главное окно.
Вы можете создать свой собственный объект XPCOM, хотя это не так просто сделать, особенно для такого простого случая, как ваш
Вы можете использовать модули JavaScript для создания глобального синглтона.
Вам следует рассмотреть возможность использования опции модулей JavaScript. Это самый простой и надежный способ. Он был представлен в Firefox 3.0, и вы можете сделать это, используя только JavaScript без необходимости создания XPCOM
Проверьте здесь для более подробной информации:
https://developer.mozilla.org/en/JavaScript_code_modules/Using_JavaScript_code_modules
ОБНОВЛЕНИЕ:
Вот еще несколько подробностей о том, как получить ссылку на главное окно, чтобы увидеть, какие переменные определены в browser.xul.
Вы определяете переменную в оверлее browser.xul (главное окно):
myArray = [1, 2, 3];
Затем из боковой панели xul вы можете получить ссылку на главное окно и получить доступ к вашей переменной, используя ссылку:
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 value = mainWindow.myArray[0];
Эти ссылки могут содержать полезную информацию для вас:
https://developer.mozilla.org/en/Working_with_windows_in_chrome_code
https://developer.mozilla.org/en/Code_snippets/Tabbed_browser