2

私は XUL を使用して Firefox プラグインを開発していますが、次のものがあります。

<toolbarpalette id="BrowserToolbarPalette">
    <toolbarbutton id="MYBUTTON_ID" type="menu-button" class="toolbarbutton-1" label="Menu" tooltiptext="Menu" oncommand="checkLogin();" popup="login-popup">
        <menupopup id="mymenu">
            <menuitem label="Menu 1" oncommand="toDo(); event.stopPropagation();"/>
            <menuitem label="Menu 2" oncommand="toDo(); event.stopPropagation();"/>
            <menuitem label="Menu 3" oncommand="toDo(); event.stopPropagation();"/>
        </menupopup>
    </toolbarbutton>
</toolbarpalette>
<popupset>
    <panel id="login-popup" backdrag="true" type="arrow" noautohide="false">
        <vbox flex="1">
            <hbox flex="1">
                <label control="user-label" width="60px" value="Username:"/>
                <textbox id="user"/>
            </hbox>
            <hbox flex="1">
                <label control="pwd-label" width="60px" value="Password:"/>
                <textbox id="pwd"  type="password"/>
            </hbox>
            <hbox>
                <checkbox label="Ricordami" checked="false"/>
            </hbox>
            <hbox flex="1">
                <spacer flex="1"/>
                <button id="pwd" width="30px" label="Login"/>
            </hbox>
        </vbox>
    </panel>
</popupset>

メニューボタンの「ボタン」部分をクリックすると、ログインポップアップが正しく表示されますが、矢印(「メニュー」部分)をクリックすると、メニューポップアップとメニューポップアップの背後にあるログインポップアップが表示されます。 「ポップアップ」イベントは、矢印をクリックしたときにも発生しますが、メニューポップアップのみを表示したいです。これに到達する方法は?私は XUL 開発の初心者です。

4

1 に答える 1

0

popup1 つの に対して2 つの を使用することはできませんbutton(技術的には複数ありますが)。

  1. 属性を削除しpopup=ます。
  2. あなたのポップアップを表示しますoncommand

    document.getElementById("login-popup")
      .openPopup(event.originalTarget, 
                 "after_start",
                  0, 0,
                  false, true,
                  event);
    
  3. そのような をクリックしたときにトリガーが発生し.originalTargetないように、 がmenuitem最初ではないことを確認する必要がある場合があります。popupmenuitem

余談: 他のアドオンやブラウザ自体との競合を避けるために、オーバーレイとオーバーレイ スクリプトでは、十分に一意な DOM ID/クラスと、十分に一意な変数/関数名を使用してください。参照: JavaScript オブジェクト管理

于 2013-09-17T12:57:49.613 に答える