Je construis une extension Firefox et voudrais permettre à l'utilisateur de supprimer des objets de l'arborescence avec la touche delete. J'appelle actuellement une fonction lorsque l'utilisateur appuie sur un bouton, mais je voudrais leur permettre de simplement appuyer sur la touche d'effacement de leur clavier.Comment supprimer un objet d'un arbre dans XUL avec la touche d'effacement?
Répondre
En fait, je l'ai compris. J'ajouté à l'élément d'arbre dans le XUL:
onkeypress="deleteSelection(event);"
Voici mon Javascript:
function deleteSelection(event){
if(event.keyCode == KeyEvent.DOM_VK_DELETE)
{
var t = document.getElementById('gs-scrapeToolbar-middlePanel-dom-tree');
if (t.currentIndex > -1) {
treeView.model.splice(t.currentIndex, 1);
treeView.treeBox.rowCountChanged(t.currentIndex, -1);
}
}
}
Utilisez l'élément clé pour définir les raccourcis clavier de la fenêtre. See tutorial here.
Je just noticed this quand on regarde la documentation pour nsITreeView:
performAction()
Une API de commande pouvant être utilisée pour appelle des commandes sur la sélection. L'arborescence appelle automatiquement cette méthode lorsque certaines touches sont enfoncées. Par exemple, lorsque la touche SUPPR est , performanceAction sera appelée avec la chaîne de suppression.
void performAction(in wstring action);
Donc je suppose que c'est une autre façon, vous pouvez y arriver:
void performAction(action) {
if (action == 'delete') {
// delete the thing
}
}
bien que je ne l'ai pas testé.
En fait, il semble que ce n'est probablement pas la meilleure façon de le faire. https://bugzilla.mozilla.org/show_bug.cgi?id=406588 – MatrixFrog
Si vous voulez seulement que la touche d'effacement ait un effet quand l'arbre a le focus (ce qui est probablement ce à quoi les utilisateurs s'attendent), alors il vaut mieux utiliser l'attribut 'onkeypress', non? De votre lien: "Les événements clés sont seulement envoyés à l'élément qui a le focus ... Si aucun élément n'est focalisé, l'événement clé sera plutôt ciblé vers le document XUL lui-même. Dans ce cas, vous pouvez ajouter un écouteur d'événement Normalement, si vous voulez répondre globalement aux touches, vous utiliserez un raccourci clavier comme décrit précédemment. " Donc je pense que la réponse de Josh a plus de sens dans ce cas. – MatrixFrog
Probablement aussi; Je n'ai pas assez d'informations sur son interface et ses intentions de vous dire s'il a l'intention d'être un raccourci général pour la fenêtre ou non. – pc1oad1etter