Javascript Xul';s listitem命令属性不起作用?

Javascript Xul';s listitem命令属性不起作用?,javascript,command,action,xul,Javascript,Command,Action,Xul,Xul的listitem属性不起作用 我制作了这个样本,但它不起作用: <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet href="chrome://global/skin/" type="text/css"?> <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <com

Xul的listitem属性不起作用

我制作了这个样本,但它不起作用:

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>

<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

    <commandset>
        <command id="cmd_dump" oncommand="dump('ok');" />
    </commandset>

    <vbox style="background:#FFFFFF;" flex="1">
        <spacer flex="1" />
        <hbox pack="center">

            <listbox flex="1">
                <listitem label="Test1" command="cmd_dump" />
                <listitem label="Test2" command="cmd_dump" />
            </listbox>

        </hbox>
        <spacer flex="1" />
    </vbox>

</window>


如何使它工作?

汤姆-我得出了与你相同的结论,我尝试了不同的方式使命令工作,并迅速在互联网上查看(我甚至从本月初在论坛上找到了你的一篇帖子)

但是,您是否使用过旧版本的Firefox(或旧版本的XULRunner引擎)? 也许你可以稍微改变一下你想要的屏幕,比如在离开屏幕时使用命令,这样你就可以避免这个问题了

在irc.mozilla.org上的#xul这个频道上问你的问题可能是值得的。
他们最终可能会告诉你这是一个bug。

我也没有为自己工作。但是使
type=checkbox
会触发
命令
。您可以使用绝对定位和负边距来删除复选框,但这是一个丑陋的攻击

更好的方法是在Javascript中侦听
单击事件


正如Cedric所说,这可能是一个bug,尽管这个示例正在运行。

通常,列表框设计为提供单个或多个选择,而不是操作列表。从您的问题中我可以看出,您提供了某种定制UI,在这种情况下,您有许多选项:

  • 创建一个多选列表框。用户选择他们想要的项目。这可能会很麻烦,因为他们需要记住按住Ctrl键来切换特定项目的选择
  • 创建一个多复选框列表框。用户勾选他们想要的项目
  • 提供两个标有“添加”字样的列表框和按钮→" 及"← 移除“。这还允许“上移”和“下移”选项,以允许用户对所选项目重新排序

  • 事实上,当我需要它时,我添加了所需的鼠标和键盘事件,但正如你刚才所说,这是一个丑陋的解决方案。我只是想知道这是一个真正的错误,而不是我的一些不好的使用,所以我可以打开一个错误报告。关于控制器示例,我不太明白应该触发删除事件的内容。无论如何..按delete button触发“cmd_delete”。但只允许中给出的命令。此外,我以file://的形式打开了XUL文件,但这并没有给我访问appendController的权限(我的错!),但除此之外,该示例有效。该频道看起来不错,但不幸的是,它是唯一一个(krl)频道没有回答我。虽然他不在,但我昨天一整天都保持联系。关于尝试旧版本的FF:我不使用FF,只使用xulrunner。我可以尝试,但即使它有效,我也需要我的当前版本(1.9.2.13).无论如何,正如我对Manu所说的,我找到了一个解决办法,我只是想看看这是一个错误还是我的错误,这样我就可以打开一个错误报告。谢谢你的回答!你说的“让它工作”是什么意思?不清楚你期望发生什么。@Neil我不确定这个命令是如何被触发的,但我需要添加一个“进入“键侦听器和鼠标单击侦听器。我将该列表用作用户将用于在新子菜单中输入的选项列表。实际上,我需要类似按钮列表的内容,用户可以使用鼠标单击或enter键启动操作。我使用键和鼠标侦听器完成了这项工作,但如果只需设置command属性,这将是最简单的。我很难想象所需的UI,所以我所能想到的就是在richlistbox中放置一组按钮。@Neil我所做的是在我的问题示例中。现在我希望它能够执行命令(在
    command
    属性中指定),而无需向其添加键和鼠标侦听器。@Neil顺便说一句,在注释的开头使用@Tom Brito,这样它就会显示在我的摘要中。)@Tom Brito我的意思是,我不明白用户为什么想要以这种方式与列表交互。我需要一些“大画面”的概述,这样我才能看到发生了什么。