2008-10-01 4 views
1

J'ai lu et suivi YUI's tutorial pour m'être abonné aux événements Menu. J'ai aussi regardé à travers l'API et les bits du code Menu, MenuBar et d'événements personnalisés, mais les suivantes refuse travaillerEst-ce que je m'abonne aux événements du menu YUI de manière incorrecte?

// 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); 

Fonctionnellement, je suis en train d'attacher un écouteur keyPress pour chaque sous-menu le MenuBar. Je ne veux pas ajouter la bibliothèque Bubbling en tant que dépendance.

Répondre

0

Sur la base de mes tests, cela devrait fonctionner:

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

mais que seuls les feux lorsque la Menu est réception de l'événement keypress, il aurait besoin d'avoir déjà mise au point.

0

Est-ce que onShow pointe vers une fonction?

par ex.

var onShow = function() 
{ 
    alert("Click!"); 
} 
3

Todd Kloots ici, auteur du widget Menu YUI. Lorsque vous vous abonnez à des événements basés sur DOM, le nom de l'événement est en minuscules. Donc, pour l'événement "mouseover", abonnez-vous comme suit:

buyMenu.subscribe ('mouseover', onMouseOver, {foo: 'bar'}, false); En ce qui concerne votre gestionnaire d'événements keypress: vous vous abonnez correctement. Cependant, rappelez-vous que les gestionnaires d'événements liés à une clé ne se déclencheront que si le menu a le focus. Donc, assurez-vous que votre menu a le focus avant de tester vos gestionnaires d'événements liés à la clé. Aussi - je vous recommande d'écouter l'événement "keydown" plutôt que "keypress" car toutes les touches n'entraînent pas le déclenchement de l'événement "keypress" dans IE.

Si vous avez d'autres questions, veuillez les diriger vers le ydn-javascript Y! Groupe car je surveille fréquemment les messages sur ce groupe.

J'espère que cela aide.

  • Todd
Questions connexes