微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaScript实现按键精灵的原理分析

最近有个需求,需要在页面上面自动点击、输入、提交。

用以模拟真实用户的操作行为,可以通过直接执行某个元素绑定的事件,来执行操作。

也可以创建事件,再派发事件,执行操作。关于事件的更多细节,可以参考《JavaScript中事件处理》

1、模拟MouseEvent中的click事件,x与y位置随机点击

2、模拟TouchEvent中的touchstart和touchmove,用scroll来做滑动效果

3、模拟FocusEvent,聚焦到屏幕中的输入框内

一、鼠标事件MouseEvent

MouseEvent接口指用户与指针设备( 如鼠标 )交互时发生的事件。使用此接口的常见事件包括:click,dblclick,mouseup,mousedown。

MouseEvent派生自 UIEvent,UIEvent 派生自 Event。

rush:js;"> function random(max) { return Math.floor(Math.random() * max); } function on(dom,type,fn) { dom.addEventListener(type,fn,false); } on(document.body,'click',function(e) { console.log('click事件 x:'+e.clientX,'y:'+e.clientY); }); /** * MouseEvent * 包括事件 click,dblclick,mouseup,mousedown */ function mouse() { var x = random(window.outerWidth),y = random(window.outerHeight); var event = new MouseEvent('click',{ bubbles: true,cancelable: true,view: window,clientX: x,clientY: y }); console.log('click环境 x:'+x,'y:'+y); document.body.dispatchEvent(event); } mouse();

1)Event

语法如下:

typeArg:事件的名字,DOMString类型。

eventinit:

normal; word-spacing: 0px; border-collapse: collapse; border-bottom: silver 1px solid; text-transform: none; color: rgb(0,0); font: 14px/22px verdana; border-left: silver 1px solid; widows: 1; letter-spacing: normal; text-indent: 0px; -webkit-text-stroke-width: 0px"> ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

属性

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

默认

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">copedottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

是指在文档(document)渲染时插入一棵DOM元素子树,但是这棵子树不在主DOM树中。

2)UIEvent

语法如下:

有多个事件对象直接或间接的继承了UIEvent,包括:MouseEvent,TouchEvent,FocusEvent,KeyboardEvent,WheelEvent,InputEvent和CompositionEvent。

UIEventInit:

ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

3)MouseEvent

语法如下:

mouseEventinit:

normal; word-spacing: 0px; border-collapse: collapse; border-bottom: silver 1px solid; text-transform: none; color: rgb(0,0); font: 14px/22px verdana; border-left: silver 1px solid; widows: 1; letter-spacing: normal; text-indent: 0px; -webkit-text-stroke-width: 0px"> ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

属性

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

默认

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

用户屏幕screen的水平/垂直坐标位置;

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">MetaKeyottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">Meta键ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">relatedTargetottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

SEOver);

SEOut 或 mouseleave)。

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

二、触屏事件TouchEvent

TouchEvent是一类描述手指在触摸平面(触摸屏、触摸板等)的状态变化的事件。

每个Touch对象代表一个触点; 每个触点都由其位置,大小,形状,压力大小,和目标元素描述。TouchList对象代表多个触点的一个列表。

触屏touch事件的更多细节,可以参加《触屏touch事件记录》

rush:js;"> on(document.body,'touchstart',function(e) { var touch = e.touches.item(0); console.log('touchstart x:' + touch.clientX,'y:' + touch.clientY); }); on(document.body,'touchmove',function(e) { var touch = e.touches.item(0); console.log('touchmove x:' + touch.clientX,'touchend',function(e) { var touch = e.changedtouches.item(0); console.log('touchend x:' + touch.clientX,'y:' + touch.clientY); }); on(window,'scroll',function(e) { console.log('scroll timestamp:' + e.timeStamp); }); /** * TouchEvent * 包括事件 touchstart,touchend,touchmove,touchcancel */ function touchstart(x,y,number) { var touch = new Touch({ identifier: number,target: document.querySelector('.drag'),//随便设置的 clientX: x,clientY: y }); console.log('touchstart环境 x:' + x,'y:' + y); var event = new TouchEvent('touchstart',{ touches: [touch],targettouches: [touch],changedtouches: [touch] }); document.body.dispatchEvent(event); //touchstart } function touchmove(x,interval,clientY: y + interval }); var event = new TouchEvent('touchmove',changedtouches: [touch] }); document.body.dispatchEvent(event); //touchmove } function touch() { var x = random(window.outerWidth),y = random(window.outerHeight),number = 1,interval = 10; touchstart(x,number); number++; touchmove(x,number); number++; interval += 10; touchmove(x,number); document.body.scrollTop = interval; //自动滚动 } setTimeout(function() { touch(); },2000);

1)Touch

语法如下:

touchInit:

normal; word-spacing: 0px; border-collapse: collapse; border-bottom: silver 1px solid; text-transform: none; color: rgb(0,0); font: 14px/22px verdana; border-left: silver 1px solid; widows: 1; letter-spacing: normal; text-indent: 0px; -webkit-text-stroke-width: 0px"> ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

属性

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

默认

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">一个触摸点的数字标记,唯一标识符。ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">用户对可见视区的缩放行为而发生变化。ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

属性不同,不会受到initial-scale的影响;

自带的浏览器不会被影响。

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">属性不同,这个值是相对于整个html文档的坐标,这个值包含了垂直滚动的偏移。ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">用户和触摸平面的接触面的最小椭圆的水平轴(X轴)/垂直轴(Y轴)半径。ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

用户和触摸平面的接触面的角度。

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

2)TouchEvent

语法如下:

touchEventinit:

normal; word-spacing: 0px; border-collapse: collapse; border-bottom: silver 1px solid; text-transform: none; color: rgb(0,0); font: 14px/22px verdana; border-left: silver 1px solid; widows: 1; letter-spacing: normal; text-indent: 0px; -webkit-text-stroke-width: 0px"> ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

属性

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

默认

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">touchesottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">touchesottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">touches类似,但是增加了个过滤条件,要与第一个手指点的地方(同一个节点内)相同。ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">touchesottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

增加的触点。如果同时放下一根或两根手指,那么将与touches相同,但如果先放一根,在放第二根,那就会不同。

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">MetaKeyottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">Meta键

三、焦点事件FocusEvent

FocusEvent接口表示和焦点相关的事件比如 focus,blur,focusin,和 focusout。

rush:js;"> on(document.getElementById('txt'),'focus',function(e) { //console.log(e); console.log('focus timestamp:' + e.timeStamp); }); /** * FocusEvent * 包括事件 focus,focusout */ function focus() { var event = new FocusEvent('focus',{ view: window }); document.getElementById('txt').dispatchEvent(event); } focus();

1)FocusEvent

语法如下:

focusEventinit:

normal; word-spacing: 0px; text-transform: none; color: rgb(0,0); font: 14px/22px verdana; widows: 1; letter-spacing: normal; text-indent: 0px; -webkit-text-stroke-width: 0px"> ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

属性

ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px"> ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">默认 ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px"> ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px"> ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">relatedTarget ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; text-align: center; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">ottom: silver 1px solid; padding-bottom: 3px; padding-top: 3px; padding-left: 3px; border-left: silver 1px solid; padding-right: 3px">

以上所述是小编给大家介绍的JavaScript实现按键精灵的原理分析。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐