2011-09-22 3 views
1

자바 스크립트를 통해 XUL 패널 요소에 액세스하여 동적으로 열고 닫으려고합니다. 예외자바 스크립트에서 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 

일이없는 경우 알려 주시기이나 오른쪽으로하지주세요! 한 가지 더 요점은 동일한 자바 스크립트 코드에서 id를 변경하여 stringbundleset, menupopup과 같은 다른 요소에 액세스 할 수 있다는 것입니다.

+0

가능한 중복 7391635/firefox-addons-hidden-browser-in-xul-overlay). 거기에 내 대답을 참조하십시오, 그것은뿐만 아니라 귀하의 문제에 적용됩니다. –

답변

1

예를 들어 중 VBOX 또는 hbox에 내부 당신의 패널을 감싸 [? : XUL 오버레이에 숨겨진 파이어 폭스 부가 기능 (http://stackoverflow.com/questions/ 귀하의 경우

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

글쎄, 나는 안으로 포장했다 요소. 두 사람 사이의 진정한 차이는 모르지만 지금은 저에게 효과적입니다! – i01000001

관련 문제