赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 4 |
经验 | 0 |
最后登录 | 2024-3-17 |
在线时间 | 49 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 394
- 在线时间
- 49 小时
- 注册时间
- 2021-5-2
- 帖子
- 19
|
本帖最后由 qwer_run 于 2021-5-24 23:17 编辑
//更新了
//参考来源http://cache.baiducontent.com/c?m=K9wsfVaDFWez4DGgRA565VU5Bxlc9DAWbG3DlIsEvbWC3HJNFeI67N2IiEAG5v8LavsBCy18l54DgpNLwe4kJCa-AvWRh0hvpO9sBlpOly67vvvf37b-IVDKFZsPaZEK6tCMpdCRxDiniTuJbOtR8M1YZ7bcbVyJzS5IAhpQ_U7&p=8b2a970086cc42ae5af5c8225c5789&newp=8457c21d9c9512a05abd9b7d0c14c6231610db2151d7db116b82c825d7331b001c3bbfb423291402d7c17b6203a44d5fe9f53572310923a3dda5c91d9fb4c57479&s=cfcd208495d565ef&user=baidu&fm=sc&query=js%CA%F3%B1%EA%B3%A4%B0%B4&qid=87acb25f007d8077&p1=2
//这个还有点问题,console.log();调试用,请替换或者删除
/*按键顺序(多个按键夹杂时),以下左(l)表示 :鼠标左键; 右(r)表示 :鼠标右键;中(m)表示 :滚轮键 ;down :按下 up : 松开
左(down)右(down)左(up)右(up)识别为左短 右(短,长,过长) (按下右键时,左键计数器会被刷新成0)
左(down)右(down)右(up)左(up)只识别右键的长短按,原因不明
右(down)左(down)右(up)左(up)只识别右键的长短按,原因不明
右(down)左(down)左(up)右(up)识别为左(短,长,过长)右短 (按下左键时,右键计数器会被刷新成0)
与滚轮键的夹杂或者三键并用,暂未尝试。。。。。。
*/
var case_0 = function(hddd)
{
switch(hddd) // hddd 传入按键时间长短的一个参数
{
case 0 :console.log("mouse_r_press_short");break; //鼠标右键短,自己加对应条件下的行动
case 1 :console.log("mouse_r_press_long");break; //鼠标右键长,自己加对应条件下的行动
case 2 :console.log("mouse_r_press_longover");break; //鼠标右键过长,自己加对应条件下的行动
case 3 :console.log("mouse_m_press_short");break; //鼠标滚轮键短,自己加对应条件下的行动
case 4 :console.log("mouse_m_press_long");break; //鼠标滚轮键长,自己加对应条件下的行动
case 5 :console.log("mouse_m_press_longover");break; //鼠标滚轮键过长,自己加对应条件下的行动
case 6 :console.log("mouse_l_press_short");break; //鼠标左键短,自己加对应条件下的行动
case 7 :console.log("mouse_l_press_long");break; //鼠标左键长,自己加对应条件下的行动
case 8 :console.log("mouse_l_press_longover");break; //鼠标左键过长,自己加对应条件下的行动
}
};
onmousedown=function down(v) //鼠标按下时触发
{
var nw=80; //nw * TT =800ms自动终止,单位ms,设置最长按键时间
var lgok=40; //lgok * TT =400ms为长按最小值
var lgr=0; //右键计数用的变量
var lgl=0; //左键计数用的变量
var lgm=0; //滚轮键计数用的变量
var TT=10; //计数周期,多久计一次
var cn;
var cnl,cnr,cnm; //要循环的计算函数名称
if(2===v.button) //右键
{
cnr=setInterval(function(){ lgr++; },TT);
}
if(0===v.button) //左键
{
cnl=setInterval(function(){ lgl++; },TT);
}
if(1===v.button) //滚轮键
{
cnm=setInterval(function(){ lgm++; },TT);
}
onmouseup =function up(v) //鼠标释放时触发
{
if(2==v.button){clearInterval(cnr);console.log("!r"+lgr);}//如果鼠标按键弹起,终止计数函数
if(0==v.button){clearInterval(cnl);console.log("!l"+lgl);}
if(1==v.button){clearInterval(cnm);console.log("!m"+lgm);}
if(0==v.button) { lgl >=nw ? case_0(8):lgl >= lgok ? case_0(7) : case_0(6);}
if(1==v.button) { lgm >=nw ? case_0(5):lgm >= lgok ? case_0(4) : case_0(3);}
if(2==v.button) { lgr >=nw ? case_0(2):lgr >= lgok ? case_0(1) : case_0(0);}
};
};
|
|