Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在XUL中从命令事件中按下鼠标按钮?_Javascript_Xul - Fatal编程技术网

Javascript 如何在XUL中从命令事件中按下鼠标按钮?

Javascript 如何在XUL中从命令事件中按下鼠标按钮?,javascript,xul,Javascript,Xul,似乎XUL命令和单击事件有些不同 虽然使用命令事件时会调用my函数,但事件对象不包含button属性 我的问题是:如何检测在不使用单击事件的情况下按下的鼠标按钮? 可以演示我的问题的最简单代码: <?xml version="1.0"?> <?xml-stylesheet href="chrome://global/skin/" type="text/css"?> <window id="yourwindow" xmlns="http://www.mozilla.

似乎XUL命令和单击事件有些不同

虽然使用命令事件时会调用my函数,但事件对象不包含button属性

我的问题是:如何检测在不使用单击事件的情况下按下的鼠标按钮?

可以演示我的问题的最简单代码:

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

<window id="yourwindow" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script language="JavaScript">
    var showMeTheButton=function(e)
    {
        alert(e.button);
    }
</script>
<button onclick="showMeTheButton(event)" label="Click me with onclick"></button>
<button oncommand="showMeTheButton(event)" label="Click me with oncommand"></button>
</window>

var showMeTheButton=函数(e)
{
警报(e.按钮);
}

要记住的主要一点是,任何导致按钮激活的操作都会触发
oncommand
,包括在按钮有焦点时按下空格键、使用按钮上的快捷键或用鼠标单击按钮。事件处理程序实际上并不关心它是如何被调用的,只关心它是如何被调用的。(我想这是一个有意识的决定,以保持一致的用户界面。)

导致按钮属性添加到事件对象的唯一操作是
onclick
ondblick
onmousedown
onmouseup
。您会注意到,即使禁用
onclick
按钮,事件仍会激发,而
oncommand
则不会激发

要获得与
oncommand
相同的功能,您需要自己处理
onclick
onkeydown
事件,同时确保按钮仍处于启用状态。您还可以使用XBL创建一个自定义按钮,该按钮具有自定义事件,如
onleftclick
onmiddleclick
,如果未设置,则返回到
oncommand
,但我没有尝试过