XUL: нажмите на пользовательскую строку состояния, как выделить правую и левую - PullRequest
2 голосов
/ 29 марта 2011

Я разработал аддон Firefox с простой кнопкой в ​​строке состояния.Теперь я хочу получить правый и левый щелчок.

Код Mi выглядит следующим образом

<popupset>
    <menupopup id="intransContextMenu" position="overlap">
        <menuitem label="settings" onclick="alert('test');" type="checkbox"/>
        <menuitem label="test" onclick="alert('test nr 2');" type="checkbox"/>
    </menupopup>
</popupset>

<statusbar id="status-bar">
    <statusbarpanel id="2" label="test" tooltip="savetip" context="intransContextMenu"/>
</statusbar>

Щелкните правой кнопкой мыши на ярлыке теста, чтобы открыть всплывающее меню.Кажется, работает, но левый щелчок срабатывает до щелчка правой кнопкой мыши на ярлыке ТЕСТ.

Есть ли способ, позволяющий мне изолировать правый и левый щелчок?Запуск левой кнопкой мыши при возникновении щелчка левой кнопкой мыши и правой кнопкой мыши при возникновении щелчка правой кнопкой мыши.

Спасибо

1 Ответ

5 голосов
/ 29 марта 2011

Вы должны создать пользовательский обработчик событий, а не просто встроенный вызов, и внутри этого обработчика вы можете узнать, какая кнопка была нажата:

function whichButton(e)
{
    var btnCode = e.button;

    switch (btnCode){
      case 0  : alert('Left button clicked');
                break;
      case 1  : alert('Middle button clicked');
                break;
      case 2  : alert('Right button clicked');
                break;
      default : alert('Unexpected code: ' + btnCode);
    }
}

<popupset>
    <menupopup id="intransContextMenu" position="overlap">
        <menuitem label="settings" onclick="alert('test');" type="checkbox"/>
        <menuitem label="test" onclick="whichButton(event);" type="checkbox"/>
    </menupopup>
</popupset>

Также, для предотвращения появления контекстного меню вы можете использовать обработчик события oncontextmenu:

<menuitem label="test" onclick="whichButton(event);" type="checkbox" oncontextmenu="event.preventDefault();"/>
...