<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 ?
<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 ?
<img src="..." onmousedown="fun1()" onmouseup="fun2()" ondblclick="fun1();fun2()">
如果改为如下:
<img src="..." onmousedown="fun1()" onmouseup="fun2()" ondblclick="fun1();fun2()">
快速点击2次时,先执行fun1(down)、fun2(up)、fun2(up)、fun1();fun2()(dblclick)
多了一次up
而onmousedown就不同,如果被认作dblclick那第2下就不会
怎么把双击的事件变为:down、up、click、down、up、click ?
鼠标按下时把img的图像变一下,同时提交表单给一个cgi程序,cgi程序发出一条指令给一台机器开始一个动作,鼠标弹起时img的图像再变回原样,同时提交表单给一个cgi程序,cgi程序发出一条指令给一台机器停止刚才的动作,但快速点击时响应不过来。
以前用mfc做的程序也遇到过这样的问题,加了一句
::SetClassLong(m_hWnd, GCL_STYLE, ::GetClassLong(m_hWnd, GCL_STYLE) ^ CS_DBLCLKS);
就可使双击消息不再出现,能发出2个down和up,现在用浏览器做控制程序就不知如何解决这个问题了。
如果你必须要执行那么多次对称的函数,不然两个函数放在同一个事件里面调用,意义并不大。你左键在其他object上mousedown,然后移动到图片上,只会触发up事件,所以控制的的话,最好还是按照用click和dbclick的思路。要是细微的时间差别也很重要,那么就要设置标志来控制是否执行事件,return false。