Xul 的 listitem 命令属性不起作用?

Posted

技术标签:

【中文标题】Xul 的 listitem 命令属性不起作用?【英文标题】:Xul's listitem command attribute does not work? 【发布时间】:2011-06-04 20:15:08 【问题描述】:

Xul 的 listitem command 属性不起作用?

我已经制作了这个示例,但它无法正常工作:

<?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>

如何让它发挥作用?

【问题讨论】:

“让它工作”是什么意思?目前尚不清楚您期望发生什么。 @Neil 我不确定这个命令是如何被触发的,但我需要添加一个“enter”键监听器和一个 mouseclick 监听器。我将该列表用作用户将用于输入新子菜单的选项列表。 【参考方案1】:

我也没有为我工作。但是制作type = checkbox 确实会触发command。您可以使用绝对定位和负边距摆脱复选框,但这是一个丑陋的黑客。

更好的方法是在 javascript 中监听 &lt;listitem&gt;click 事件。

正如 Cedric 所说,尽管controllers - MDC 的示例有效,但它可能是一个错误。

【讨论】:

其实我在需要的时候添加了需要的鼠标和键盘事件,但正如你刚才所说,这是一个丑陋的解决方案。我只是想知道这确实是一个错误,而不是我的一些不好的用途,所以我可以打开一个错误报告。关于控制器示例,我不太了解应该触发删除事件的内容..无论如何.. 按下删除按钮会触发“cmd_delete”。但只允许使用mxr.mozilla.org/mozilla-central/source/browser/components/… 中给出的命令。此外,我将 XUL 文件打开为 file:// 并且没有让我访问 appendController(我的错!),但除此之外,该示例有效。【参考方案2】:

Tom - 我得出了与您相同的结论,尝试了不同的方式使命令起作用,并迅速在 Internet 上查看(我什至在本月初的论坛上找到了您的一篇帖子) .

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

也许值得在这个频道上提问:#xul on irc.mozilla.org。 他们最终可能会告诉你这是一个错误。

【讨论】:

这个频道看起来不错,不幸的是那里唯一的人 (krl) 没有回答我。以为他不在,但我昨天整天都保持联系。关于尝试旧版本的FF:我没有使用FF,只是xulrunner。我可以尝试,但即使它有效,我也需要我当前的版本(1.9.2.13)。无论如何,正如 Manu 所说,我找到了一种解决方法,我只是想看看这是我的错误还是我的错误,所以我可以打开一个错误报告。感谢您的回答!【参考方案3】:

通常,列表框旨在提供单项或多项选择,而不是操作列表。据我从您的问题中得知,您提供了某种自定义 UI,在这种情况下,您有多种选择:

    创建一个多选列表框。用户选择他们想要的项目。这可能很麻烦,因为他们需要记住按住 Ctrl 键来切换特定项目的选择。 创建一个多复选框列表框。用户勾选他们想要的项目。 提供两个列表框和按钮(例如)“添加 →”和“← 删除”。这也允许“上移”和“下移”选项,以允许用户重新排序选择的项目。

【讨论】:

实际上,我想要一个按钮列表之类的东西,用户可以使用鼠标单击或输入键触发操作。我使用键和鼠标侦听器做到了这一点,但如果它可以通过设置命令属性来实现,那将是最简单的。 我无法想象所需的 UI,所以我能想到的就是您将一堆按钮放在 Richlistbox 中。 @Neil 我所做的是在我的问题示例中。现在我希望它执行命令(在command 属性中指定)而不需要向它添加键和鼠标侦听器。 @Neil 顺便说一句,在评论的开头使用@Tom Brito,所以它会出现在我的摘要中.. ;) @Tom Brito 我的意思是我不明白为什么用户会希望以这种方式与列表进行交互。我需要某种“大局”概览,以便了解正在发生的事情。

以上是关于Xul 的 listitem 命令属性不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

Redux Form Material UI:选择嵌套列表不起作用

Magento 2:自定义属性不起作用

为什么这个python程序不起作用? AttributeError:'module'对象没有属性

列表项“li:hover”不起作用

C# xml 反序列化不会将子元素提取到列表中

触发方法在jQuery中不起作用