Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在javascript中捕获XUL面板元素_Javascript_Firefox Addon_Xul - Fatal编程技术网

无法在javascript中捕获XUL面板元素

无法在javascript中捕获XUL面板元素,javascript,firefox-addon,xul,Javascript,Firefox Addon,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" ?> <!DOC

我试图通过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);
}

请让我知道是否有东西丢失或不正确!还有一点是,我可以通过在相同的javascript代码中更改id来访问其他元素,如stringbundleset、MenuOpup。

将面板包装在vbox或hbox中 例如:在你的情况下

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

将面板包装在vbox或hbox中 例如:在你的情况下

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

可能存在的重复项。看到我的答案了,它也适用于你的问题。可能是重复的。看到我的答案了,它也适用于你们的问题。我把它包装在元素中。我不知道两者之间的真正区别,但它现在对我有效!我把它包在元素里了。我不知道两者之间的真正区别,但它现在对我有效!