2011-09-22 23 views
1

我正在嘗試通過javascript訪問XUL面板元素來動態地打開和關閉它。無法在javascript中捕獲XUL面板元素

<?xml version="1.0"?> 

<?xml-stylesheet type="text/css" href="chrome://global/skin/" ?> 
<?xml-stylesheet type="text/css" 
    href="chrome://textareaautocomplete/skin/browserOverlay.css" ?> 

<!DOCTYPE overlay SYSTEM 
    "chrome://textareaautocomplete/locale/browserOverlay.dtd"> 

<overlay id="textareaautocomplete-browser-overlay" 
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> 

    <script type="application/x-javascript" 
    src="chrome://textareaautocomplete/content/browserOverlay.js" /> 

<stringbundleset id="stringbundleset"> 
    <stringbundle id="textareaautocomplete-string-bundle" 
     src="chrome://textareaautocomplete/locale/browserOverlay.properties" /> 
    </stringbundleset> 

    <menupopup id="menu_ToolsPopup"> 
    <menu id="xs-textareaautocomplete-menu" label="&textareaautocomplete.menu.label;" 
     accesskey="&textareaautocomplete.menu.accesskey;" 
     insertafter="javascriptConsole,devToolsSeparator"> 
     <menupopup> 
     <menuitem id="textareaautocomplete-ta-menu-item" 
      label="&textareaautocomplete.cache.start.label;" 
      accesskey="&textareaautocomplete.cache.accesskey;" 
      oncommand="TextareaAutocomplete.BrowserOverlay.main();" /> 
     </menupopup> 
    </menu> 
    </menupopup> 

    <panel id="textareaautocomplete-ta-dropdown-panel"> 
    <textbox id="search"/> 
    </panel> 

</overlay> 

try { 
    let panel = document.getElementById("textareaautocomplete-ta-dropdown-panel"); 
    panel.openPopup(node, "after_start", 0, 0, false, false); 
} 
    catch(e) { 
    window.alert("Failed to set drop down: " + e.name + ": " + e.message); 
} 
異常

這給了我以下錯誤信息:

panel is null 

請讓我知道如果有任何缺失或不正確的!還有一點是,我可以通過在相同的javascript代碼中更改id來訪問其他元素,如stringbundleset,menupopup。

+0

的可能的複製[火狐瀏覽器安裝:在XUL覆蓋隱藏](http://stackoverflow.com/questions/ 7391635 /火狐 - 插件隱藏瀏覽器功能於XUL的疊加)。看到我的答案,它也適用於你的問題。 –

回答

1

包裝你一個VBOX或橫向盒 例如內部面板:在你的情況

<hbox> 
<panel id="textareaautocomplete-ta-dropdown-panel"> 
    <textbox id="search"/> 
    </panel> 
<hbox> 
+0

那麼我把它包裹在元素裏面。不知道兩者之間的真正差異,但它現在適用於我! – i01000001