movementX,movementY返回一个位移,单位为像素,表示当前位置与上一个mousemove事件之间的距离,在数值上,等于currentEvent.movementX = currentEvent.screenX - previousEvent.screenX
relatedTarget属性返回事件的次要相关节点,即和target属性对应的节点,如:mouseout target指将要离开的节点,relatedTarget指将要进入的节点。对于那些没有次要相关节点的事件,该属性返回null
wheel事件是与鼠标滚轮相关的事件,浏览器提供一个WheelEvent构造函数new WheelEvent(typeArg, mouseEventInit),deltaX:返回一个数值,表示滚轮的水平滚动量。deltaY:返回一个数值,表示滚轮的垂直滚动量。deltaZ:返回一个数值,表示滚轮的Z轴滚动量。deltaMode:返回一个数值,表示滚动的单位,适用于上面三个属性。0表示像素,1表示行,2表示页。
四、键盘事件KeyboardEvent对象:
构造函数new KeyboardEvent(typeArg, KeyboardEventInit),内置事件keydown:按下键盘时触发该事件。keypress:只要按下的键并非Ctrl、Alt、Shift和Meta,就接着触发keypress事件。keyup:松开键盘时触发该事件;
altKey,ctrlKey,metaKey,shiftKey返回一个布尔值,表示是否按下对应的键
key属性返回一个字符串,表示按下的键名。如果同时按下一个控制键和一个符号键,则返回符号键的键名。比如,按下Ctrl+a,则返回a。如果无法识别键名,则返回字符串Unidentified
五、进度事件ProgressEvent对象:
构造函数new ProgressEvent(type, {lengthComputable: aBooleanValue, loaded: aNumber,total: aNumber})默认值分别为false,0,0,进度事件用来描述一个事件进展的过程,比如XMLHttpRequest对象发出的HTTP请求的过程、<img>、<audio>、<video>、<style>、<link>加载外部资源的过程。下载和上传都会发生进度事件。
lengthComputable:返回一个布尔值,表示当前进度是否具有可计算的长度。如果为false,就表示当前进度无法测量。total:返回一个数值,表示当前进度的总长度。如果是通过HTTP下载某个资源,表示内容本身的长度,不含HTTP头部的长度。如果lengthComputable属性为false,则total属性就无法取得正确的值。
loaded:返回一个数值,表示当前进度已经完成的数量。该属性除以total属性,就可以得到目前进度的百分比。if (e.lengthComputable) {var percentComplete = e.loaded / e.total; }
包含以下事件:
abort事件:当进度事件被中止时触发。如果发生错误,导致进程中止,不会触发该事件。
error事件:由于错误导致资源无法加载时触发,不会冒泡。error事件的监听函数最好放在如img元素的HTML属性中,这样才能保证发生加载错误时百分之百会执行。
load事件:进度成功结束时触发。
loadstart事件:进度开始时触发。
loadend事件:进度停止时触发,发生顺序排在error事件\abort事件\load事件后面。loadend事件的监听函数可以用来取代abort事件/load事件/error事件的监听函数,loadend事件本身不提供关于进度结束的原因,但可以用它来做所有进度结束场景都需要做的一些操作。
progress事件:当操作处于进度之中,由传输的数据块不断触发。
timeout事件:进度超过限时触发
六、拖拉事件DragEvent对象:
拖拉指的是,用户在某个对象上按下鼠标键不放,拖动它到另一个位置,然后释放鼠标键,将该对象放在那里。拖拉的对象有好几种,包括Element节点、图片、链接、选中的文字等等。在HTML网页中,除了Element节点默认不可以拖拉,其他(图片、链接、选中的文字)都是可以直接拖拉的。为了让Element节点可拖拉,可以将该节点的draggable属性设为true。draggable属性可用于任何Element节点,但是图片(img元素)和链接(a元素)不加这个属性,就可以拖拉。对于它们,用到这个属性的时候,往往是将其设为false,防止拖拉。注意,一旦某个Element节点的draggable属性设为true,就无法再用鼠标选中该节点内部的文字或子节点了。
当Element节点或选中的文本被拖拉时,就会持续触发拖拉事件,包括以下一些事件:
drag事件:拖拉过程中,在被拖拉的节点上持续触发。
dragstart事件:拖拉开始时在被拖拉的节点上触发,该事件的target属性是被拖拉的节点。通常应该在这个事件的监听函数中,指定拖拉的数据。