<html>
<head>
<title>test</title>
<script language="javascript">
var str = "";
function fun1()
{
str += "down\n"
document.all.x.innerText = str;
}
function fun2()
{
str += "up\n"
document.all.x.innerText = str;
}
function fun3()
{
str += "click\n"
document.all.x.innerText = str;
}
function fun4()
{
str += "dblclick\n"
document.all.x.innerText = str;
}
</script>
</head>
<body>
<img src="pic/01.gif"  onmousedown="fun1()" onmouseup="fun2()" onclick="fun3()" ondblclick="fun4()">
<p id="x"></p>
</body>
</html>
----------------------------------------------------
从这个例子可看出:
鼠标点击速度较慢的两次点击为:down up click  down up click
鼠标点击速度较快的两次点击为:down up click  up dblclick
如何才能使点击很快时也能有 2 个down up ?

解决方案 »

  1.   

    与其禁止,倒不如利用
    <img src="..." onmousedown="fun1()" onmouseup="fun2()" ondblclick="fun1();fun2()">
      

  2.   

    鼠标点击速度较快的两次点击为:down up click  up dblclick
    如果改为如下:
    <img src="..." onmousedown="fun1()" onmouseup="fun2()" ondblclick="fun1();fun2()">
    快速点击2次时,先执行fun1(down)、fun2(up)、fun2(up)、fun1();fun2()(dblclick)
    多了一次up
      

  3.   

    onmouseup应该是每次都会触发,不管是否响应了dblclick,只要鼠标放开就触发
    而onmousedown就不同,如果被认作dblclick那第2下就不会
      

  4.   

    我的问题没表达清楚,应该是
    怎么把双击的事件变为:down、up、click、down、up、click ?
      

  5.   

    我是要实现这样的功能:
    鼠标按下时把img的图像变一下,同时提交表单给一个cgi程序,cgi程序发出一条指令给一台机器开始一个动作,鼠标弹起时img的图像再变回原样,同时提交表单给一个cgi程序,cgi程序发出一条指令给一台机器停止刚才的动作,但快速点击时响应不过来。
    以前用mfc做的程序也遇到过这样的问题,加了一句
    ::SetClassLong(m_hWnd, GCL_STYLE, ::GetClassLong(m_hWnd, GCL_STYLE) ^ CS_DBLCLKS);
    就可使双击消息不再出现,能发出2个down和up,现在用浏览器做控制程序就不知如何解决这个问题了。
      

  6.   

    那么你把事件处理调用加到down 和click里面,dbclick则调用这两个函数。
    如果你必须要执行那么多次对称的函数,不然两个函数放在同一个事件里面调用,意义并不大。你左键在其他object上mousedown,然后移动到图片上,只会触发up事件,所以控制的的话,最好还是按照用click和dbclick的思路。要是细微的时间差别也很重要,那么就要设置标志来控制是否执行事件,return false。