Я неправильно подписался на события YUI Menu? - PullRequest
1 голос
/ 01 октября 2008

Я прочитал и последовал Учебник YUI для подписки на события Меню. Я также просмотрел API и биты кода для Menu, MenuBar и пользовательских событий, но следующее отказывает в работе

// oMenuBar is a MenuBar instance with submenus
var buyMenu = oMenuBar.getSubmenus()[1];

// this works
buyMenu.subscribe('show', onShow, {foo: 'bar'}, false);

// using the subscribe method doesn't work
buyMenu.subscribe('mouseOver', onMouseOver, {foo: 'bar'}, false);

// manually attaching a listener doesn't work
YAHOO.util.Event.addListener(buyMenu, 'mouseOver', onMouseOver);

// http://developer.yahoo.com/yui/docs/YAHOO.widget.Menu.html#event_keyPressEvent        
// there is a keyPress Event, but no spelling of it will trigger the handler
buyMenu.subscribe('keypress', onShow, {foo: 'bar'}, false);
buyMenu.subscribe('keypressed', onShow, {foo: 'bar'}, false);
buyMenu.subscribe('keyPressed', onShow, {foo: 'bar'}, false);
buyMenu.subscribe('keyPress', onShow, {foo: 'bar'}, false);

Функционально я пытаюсь подключить слушатель keyPress для каждого подменю панели меню. Я не хочу добавлять библиотеку Bubbling в качестве зависимости.

Ответы [ 3 ]

3 голосов
/ 20 октября 2008

Тодд Kloots здесь, автор виджета YUI Menu. Когда вы подписываетесь на события, основанные на DOM, имя события все в нижнем регистре. Итак, для события mouseover подпишитесь следующим образом:

buyMenu.subscribe ('mouseover', onMouseOver, {foo: 'bar'}, false);

Относительно вашего обработчика событий нажатия клавиш: вы подписываетесь правильно. Однако помните, что любые связанные с ключом обработчики событий будут срабатывать только в том случае, если меню имеет фокус. Поэтому убедитесь, что ваше меню сфокусировано, прежде чем тестировать обработчики событий, связанных с ключами. Кроме того - я бы порекомендовал прослушивать событие «keydown», а не «нажатие клавиши», поскольку не все клавиши приводят к срабатыванию события «нажатие клавиши» в IE.

Если у вас есть какие-либо вопросы, пожалуйста, направьте их на ydn-javascript Y! Группа, поскольку я часто отслеживаю сообщения в этой группе.

Надеюсь, это поможет.

  • Todd
0 голосов
/ 10 октября 2008

OnShow указывает на функцию?

например.

var onShow = function()
{
    alert("Click!");
}
0 голосов
/ 02 октября 2008

На основании моего тестирования будет работать следующее:

oMenu.subscribe('keypress', function () { alert("I'm your friendly neighborhood keypress listener.")});

, но срабатывает только тогда, когда Menu получает событие keypress, поэтому он должен уже иметь фокус.

...