2011-07-14 25 views
2

如何在xul中製作對接面板。它應該像螢火蟲一樣工作。我想是這樣的:xul中的對接面板

myWindow = window.open("chrome://project/content/myWindow.xul", "someRandomName", "chrome"); 

和myWindow.xul是:

<?xml version="1.0" encoding="utd-8"?> 
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?> 

<?xul-overlay href="chrome://project/content/myPanel.xul"?> 

    <window id="dockedPanel" title="my super extension" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:html="http://www.w3.org/1999/xhtml"> 
     <hbox flex="1"> 
      <vbox id="myPanel"/> 
     </hbox> 
    </window> 

myPanel.xul是我的面板,並且myPanel是VBOX的ID在myPanel.xul

當我打開這樣的窗口,它看起來很像我想要的,但所有的按鈕/其他組件不起作用。例如,如果我有按鈕myPanel.xul:

<button id="myButton" label="button" onclick = "jsScriptFromOtherFile.someFunction()"/> 

,如果我點擊mywindow的那個按鈕,然後someFunction不叫。我不知道爲什麼,以及如何使它工作。

+0

你可以發佈不起作用的完整示例嗎?根據你的描述,目前還不清楚問題是什麼。例如,我假設你在XUL文件中包含腳本文件,對吧? –

回答

0

我想你的問題是,你期望所有的窗口共享JavaScript代碼/狀態/範圍,無論你怎麼稱呼它;在'myWindow.xul'或'myPanel.xul'中加載的任何腳本中未定義'jsScriptFromOtherFile',它在調用window.open的父窗口中定義。

每個「窗口」(或選項卡,iframe等)都有自己的全局對象。要訪問另一個「窗口」中的變量,首先必須獲得該窗口的句柄。見Working with windows in chrome code