2008-12-19 9 views
2

J'utilise Dojo 1.2 pour implémenter certaines fonctionnalités sur la page Web de mon client. L'un des widgets que j'utilise est le dijit.layout.TabContainer, qui hérite de StackContainer. Le StackContainer s'abonne aux événements du clavier et crée quelques raccourcis clavier, comme flèche vers la gauche pour déplacer un onglet vers la gauche et ainsi de suite.Comment désactiver les raccourcis clavier dans Dojo StackContainer

Maintenant à la question: Je voudrais désactiver cette fonctionnalité hotkey dans mon TabContainer. Existe-t-il une option de configuration que je peux définir (impossible à trouver dans l'API) pour y parvenir, ou devra pirater le code Dojo ou peut-être créer mes propres versions de StackContainer et TabContainer pour me débarrasser des raccourcis clavier? Je préférerais bien sûr ne pas jouer avec le code Dojo.

Meilleures salutations/Fredrik

Répondre

2

outrepasser simplement _onKeyPress avec un corps vide:

 
<div dojoType='dijit.layout.TabContainer'> 
<script type='dojo/method' event='_onKeyPress'></script> 
... 
<div> 

fonctionne comme un charme.

+0

Dans les versions récentes de Dojo, la fonction à remplacer est désormais '_onKeyDown'. – paraquat

0

Je suis juste le brassard de codage de là, et je ne le tester du tout. Je rends ceci wikified, ainsi postez la source correcte s'il y a des problèmes s'il vous plaît.

Utilisez le code JavaScript suivant dans un fichier appelé com/stackoverflow/KeyPresslessTabContainer.js:

dojo.provide ("com.stackoverflow KeyPresslessTabContainer");

dojo.require ("dijit.layout.TabContainer");

dojo.declare ("com.stackoverflow.KeyPresslessTabContainer", dijit.layout TabContainer, { _controllerWidget: "com.stackoverflow.KeyPresslessTabController" }.);

dojo.declare ("com.stackoverflow.KeyPresslessTabController", dijit.layout.TabController, { /* * Ceci est la partie importante Le code original était:. * templateString: "" * Dans le modèle ci-dessous, nous supprimons l'écouteur onkeypress, * et les touches doivent être ignorées */ templateString: "" });

Questions connexes