Firefox addon 如何对listitem双击做出反应并为每个listitem添加上下文菜单?
我的xul中有Firefox addon 如何对listitem双击做出反应并为每个listitem添加上下文菜单?,firefox-addon,xul,Firefox Addon,Xul,我的xul中有listbox元素。元素被动态地添加到那里 我怎样才能: 双击每个列表项 为每个列表项实施上下文菜单 在创建listitems的过程中,我知道添加到其中的每个记录的唯一id(数字)。理想情况下,当调用双击函数并选择上下文菜单项时,我应该获得此id(用户不应该看到它)。事件气泡,这意味着您可以在元素上注册事件处理程序事件。目标允许您查找元素: listbox.addEventListener(“dblclick”,函数(事件) { var target=event.target; w
listbox
元素。元素被动态地添加到那里
我怎样才能:
列表项
列表项实施上下文菜单
在创建
listitem
s的过程中,我知道添加到其中的每个记录的唯一id(数字)。理想情况下,当调用双击函数并选择上下文菜单项时,我应该获得此id(用户不应该看到它)。事件气泡,这意味着您可以在
元素上注册事件处理程序<代码>事件。目标允许您查找
元素:
listbox.addEventListener(“dblclick”,函数(事件)
{
var target=event.target;
while(target&&target.localName!=“listitem”)
target=target.parentNode;
如果(!目标)
return;//事件目标不是列表项
警报(target.getAttribute(“recordId”);
},假);
这假设您在将属性添加到列表中之前,已经向列表项添加了recordId
属性
上下文菜单的工作原理类似(您将context=“…”
属性添加到
),不同之处在于上下文菜单通常在菜单的弹出显示事件中初始化。此事件的目标是上下文菜单本身,因此它不会帮助您找到列表项。但是,有一种(不推荐使用的document.popupNode
)可以让您执行此任务:
menu.addEventListener(“弹出显示”,函数(事件)
{
var target=event.target.triggerNode;
while(target&&target.localName!=“listitem”)
target=target.parentNode;
如果(!目标)
return event.preventDefault();//不显示没有列表项的上下文菜单
警报(target.getAttribute(“recordId”);
},假);
谢谢,瓦拉迪米尔。这么简单。只是小小的更正-listItem
在您的代码中应该被target
@BGM替换:虽然我看不出它与我的答案有什么关系,但问题很明显-listbox
变量未定义;)@Wladimirplant-它只与我来这里寻找相同答案的答案有关(因此我不能问相同的问题),但我不知道如何在我的案例中应用它。我知道listbox
未定义,但为什么<代码>窗口。AddEventListener
工作正常。@WladimirPalant我在这里解决了启动它的问题:但是在尝试检索属性值时挂断了,就像您在回答中所示。以下是我的相关问题: