Изменение поведения мыши в меню YUI - PullRequest
0 голосов
/ 22 января 2009

Я использую Yui для создания «всплывающего» меню, которое работает с мышью немного иначе, чем обычно. Это , а не ContextMenu, потому что я хочу, чтобы он реагировал на левые щелчки, и ContextMenu, похоже, склонен реагировать на правые щелчки.

Следуя примерам, если я сделаю это, появится меню, и все будет так, как я хочу:

YAHOO.util.Event.addListener(myClickTarget, 'click', myThingGotClicked);

В моей функции myThingGotClicked я вручную устанавливаю позицию меню и show() it.

Моя проблема в том, что я хочу "привязать" видимость меню к состоянию кнопки мыши. То есть на mouseDown я хочу, чтобы меню появлялось, а на mouseUp я хочу, чтобы меню исчезало (выбор активного элемента, если таковой имеется). Таким образом, прослушивание события «щелчок» не делает правильных действий, потому что «щелчок» отправляется только после mouseUp.

«Очевидное» решение заключается в следующем:

YAHOO.util.Event.addListener(myClickTarget, 'mousedown', myThingGotClicked);

Но это не работает. Проходя через отладчик, вы можете увидеть, что он действительно вызывает меню в mousedown, но затем что-то сразу скрывает меню. На полной скорости, похоже, ничего не происходит вообще.

Есть мысли?

Ответы [ 2 ]

1 голос
/ 23 января 2009

Проблема в том, что класс MenuManager прослушивает событие mousedown на уровне документа и скрывает все видимые экземпляры меню. Итак, поскольку вы создаете уникальный вид реализации Menu, вам необходимо остановить распространение события mousedown внутри вашего обработчика, чтобы MenuManager не обрабатывал это событие. Вот какой-то псевдокод для вас:

var myThingGotClicked = function (event) {

    YAHOO.util.Event.stopPropagation(event);

    // Do other stuff

};

YAHOO.util.Event.on(myClickTarget, 'mousedown', myThingGotClicked);
  • Todd
0 голосов
/ 26 января 2009

Это немного ближе, так как меню действительно появляется, но если вы попытаетесь сделать выбор в меню, выбор текста на странице под ним станет своего рода орехами. Мне также нужно добавить обработчик mouseup, так как меню не закрывается при отпускании мыши.

Что мне действительно нужно, так это меню, которые работают как меню в каждой версии Mac OS (до недавнего времени, когда OS X добавляла «щелчок», чтобы сделать меню «привязанным» к поведению по умолчанию).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...