JavaScript 事件类型(键盘事件,鼠标事件,焦点事件)
- 键盘事件
- 鼠标事件
- 焦点事件
键盘事件
事件 | 发生时机 |
---|---|
onkeydown | 键盘按键按下 |
keypress | 键盘按键按住 |
keyup | 键盘按键松开 |
监听某个按键事件
document.onkeydown = function(event) { // 键盘按下时触发 console.log('key down');};document.onkeypress = function(event) { // 键盘按住时触发 console.log('key press');};document.onkeyup = function (event) { // 键盘弹起时触发 console.log('key up');};
event参数
该参数为 KeyboardEvent
事件对象,其中包含按键相关的少量属性。
type
:事件类型key
:表示按下的键盘内容是什么即键值,按下字母 ‘p’ 时,值为’p’code
:表示键盘代码,按下字母 ‘p’ 时,值为 ‘KeyP’keyCode
:整数,表示键码,每个键都有唯一的键码,字母 ‘p’ 的键码为80altKey
:布尔值,表示此时的 alt 键能否也按下ctrKey
:布尔值,表示此时的 ctr 键能否也按下shiftKey
:布尔值,表示此时的 shift 键能否也按下metaKey
:布尔值,windows 平台表示 Window 键能否同时按下,mac表示Command键能否同时按下repeat
: 布尔值,假如一个键一直被按着,则其值为true,表示重复
可以通过检查这些属性来判断客户按下的是什么键,以及能否 ctrl 和 alt 等键能否同时按下:
document.onkeydown = function(event) { // 键盘按下是触发 console.log('key down: ' + event.key); if (event.altKey) { console.log('alt is active'); } if (event.shiftKey) { console.log('shift is active'); }};
鼠标事件
事件 | 发生时机 |
---|---|
onclick | 鼠标单击对象时触发的事件 |
ondblclick | 鼠标双击对象时触发的事件 |
onmousedown | 鼠标按钮被按下时触发的事件 |
onmousemove | 鼠标被移动时触发的事件 |
onmouseout | 鼠标离开监听该事件的元素或者子元素时触发的事件 |
onmouseover | 鼠标移动到监听该事件的元素或者子元素时触发的事件 |
onmouseup | 鼠标按键被松开时触发的事件 |
示例:
<script type="text/javascript"> function appendText(str) { document.body.innerHTML += str + "<br/>"; } document.onmousedown = function() { appendText("onmousedown"); appendText("button = " + event.button); appendText("(x,y) = " + event.x + "," + event.y); } document.onmouseup = function() { appendText("onmouseup"); } document.onclick = function() { appendText("onclick"); } document.ondblclick = function() { appendText("ondblclick"); } document.oncontextmenu = function() { appendText("oncontextmenu"); } document.onmouseover = function() { appendText("onmouseover"); } document.onmouseout = function() { appendText("onmouseout"); } document.onmousemove = function() { appendText("mousemove"); }</script>
触发时的参数为 MouseEvent 对象类型,MouseEvent对象中包含下面比较有用的属性:
type
: 事件类型,如mosemove
或者者mousedown
button
:整型,触发鼠标事件时按下的按钮编号buttons
:整型,触发鼠标事件时弹起来的按钮编号clientX
:鼠标指针在 DOM 内容区的X坐标clientY
:鼠标指针在 DOM 内容区的Y坐标offsetX
:鼠标指针相对父节点填充边缘的X坐标offsetY
: 鼠标指针相对父节点填充边缘的Y坐标screenX
: 鼠标指针在全局屏幕的X坐标screenY
: 鼠标指针在全局屏幕的Y坐标pageX
: 鼠标指针在整个DOM内容(包括分页)的X坐标pageY
: 鼠标指针在整个DOM内容(包括分页)的Y坐标altKey
: 布尔值,表示此时的alt键能否也按下ctrKey
: 布尔值,表示此时的alt键能否也按下shiftKey
: 布尔值,表示此时的shift键能否也按下metaKey
: 布尔值,windows平台表示Window键能否同时按下,mac表示Command键能否同时按下
示例:点击鼠标右键,弹出div
document.oncontextmenu = function(){ return false}; //禁止鼠标右键菜单显示var res = document.getElementById('box'); //找到id为box的divdocument.body.onmouseup = function(e){ //在body里点击触发事件 if(e.button===2){ //假如button=1(鼠标左键),button=2(鼠标右键),button=0(鼠标中间键) console.log(e); //将传进去的参数打印出来 console.log(e.offsetY); //打印出鼠标点击的Y轴坐标 console.log(e.offsetX); //打印出鼠标点击的X轴坐标 res.style.top = e.offsetY+'px'; //鼠标点击时给div定位Y轴 res.style.left = e.offsetX+'px'; //鼠标点击时给div定位X轴 res.style.display = 'block'; //显示div盒子 }else{ res.style.display = 'none'; //否则不显示div盒子 } }
焦点事件
不是所有元素都有焦点事件,只有可交互性的元素才有,比方表单元素,a标签。页面中只能有一个元素有焦点,一个聚焦,另一个就失焦,默认在document。
<form> <input type="text" name="txt1" id="txt" /> <input type="button" name="btn" value="点击" /></form>
form.txt1.focus(); // 让元素取得焦点,该方法不会触发onfocus()事件。form.txt1.onfocus=function(){ console.log(1);} // 元素取得焦点时会触发该事件form.txt1.onblur=function(){ console.log(2);} //元素失去焦点时触发该事件form.btn.onclick=function(){ form.txt1.select(); } //选中输入框中的所有文字form.btn.onclick=function(){ form.txt1.setSelectionRange(2,5) ; form.txt1.focus(); } // setSelectionRange需要配合着focus()使用才看得到效果,其中setSelectionRange的结束位置不包含在内,setSelectionRange(start,end)包含两个参数,一个是start:起始位置;一个是end:结束位置。
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » JavaScript 事件类型(键盘事件,鼠标事件,焦点事件)
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » JavaScript 事件类型(键盘事件,鼠标事件,焦点事件)