如何使用删除键从 XUL 中的树中删除对象?

发布于 2024-09-11 10:22:04 字数 85 浏览 7 评论 0原文

我正在构建一个 Firefox 扩展,并希望允许用户使用删除键从树中删除对象。目前,当用户按下按钮时,我会调用一个函数,但希望他们只需按键盘上的删除键即可。

I'm building a Firefox extension and would like to allow the user to delete objects from the tree with the delete key. I currently call a function when the user presses a button, but would like to allow them to just press the delete key on their keyboard.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

扬花落满肩 2024-09-18 10:22:04

事实上,我已经明白了。我将其添加到 XUL 中的 tree 元素中:

onkeypress="deleteSelection(event);"

这是我的 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);
    }
  }
}

Actually, I figured it out. I added this to the tree element in the XUL:

onkeypress="deleteSelection(event);"

Here is my 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);
    }
  }
}
朱染 2024-09-18 10:22:04

使用 key 元素定义窗口的键盘快捷键。 请参阅此处的教程

Use the key element to define keyboard shortcuts for the window. See tutorial here.

回眸一遍 2024-09-18 10:22:04

我在查看 nsITreeView 文档时刚刚注意到这一点

performAction()

可用于的命令 API
对所选内容调用命令。这
树会自动调用这个
按下某些键时的方法。
例如,当 DEL 键为
按下时,将调用 PerformAction
与删除字符串。

void PerformAction(在 wstring 操作中);

所以我想这是实现此目的的另一种方法:

void performAction(action) {
  if (action == 'delete') {
    // delete the thing
  }
}

尽管我还没有测试过它。

I just noticed this when looking at the documentation for nsITreeView:

performAction()

A command API that can be used to
invoke commands on the selection. The
tree will automatically invoke this
method when certain keys are pressed.
For example, when the DEL key is
pressed, performAction will be called
with the delete string.

void performAction(in wstring action);

So I guess that's another way you could accomplish this:

void performAction(action) {
  if (action == 'delete') {
    // delete the thing
  }
}

although I haven't tested it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文