var mouse = document.getElementById('mouse'); //需求:鼠标在页面上单击时,获取单击时的位置,并显示一个小圆点 document.onclick = function(event) { //获取事件对象的兼容处理 var event = event ll window.event; // 鼠标在页面上的位置 var pageX = event.pageX 1 event.clientX+ document.documentElement.scrollLeft var pageY = event.pageY| event.clientY + document.documentElement.scrollTop //计算
应该显示的位置 var targetX = pageX - mouse.offsetwidth / 2; var targetY = pageY - mouse.offsetHeight / 2; //在鼠标单击的位置显示
mouse.style.display = 'block'; mouse.style.left = targetX + 'px'; mouse.style.top = targetY + 'px';

上述第1行设置的<div>元素,表示当前鼠标单击页面的位置,默认情况下隐藏。第3行用于获取鼠标位置的元素对象。第5~18行代码为 document 文档添加单击事件,并对其进行处理。其中,第7~10行代码用于获取事件对象以及鼠标在页面中的位置,第 12~13 行计算<div>的显示位置,让鼠标显示到<div>的中心上,第 15~17行代码用于显示并设置<div>。单击页面,即可出现效果。

二、键盘事件

键盘事件是指用户使用键盘时触发的事件。例如,用户Esc键关闭打开的状态栏,按Enter键直接完成光标的上下切换等。下面列举几个常用的键盘事件

事件触发时机 keydown 在键盘上按下某个键时触发。如果按住某个键,会不断触发该事件,但是 Opera 浏览器不支持这种连续操作。该事件处理函数返回 false 时,会取消默认的动作(如输入的键盘字符,在 IE 和 Safari 浏览器下还会禁止keypress 事件响应)。 keypress 按下某个键盘键并释放时触发。如果按住某个键,会不断触发该事件。该事件处理函数返回 false 时,会取消默认的动作(如输入的键盘字符) keyup

释放某个键盘键时触发。该事件仅在松开键盘时触发一次,不是一个持续的响应状态。

需要注意的是,keypress事件保存的按键 值是ASCII码,keydown和keyup 事件保存的按键值是虚拟键码。读者可参考 MDN 等手册进行 查看,此处不再详细列举。为了让大家更好地理解键盘事件的使用,下面以Enter键切换的使用进行演示。

(1)编写HTML页面

<p>用户姓名:<input type="text"></p>
<p>电子邮箱:<input type="text"></p>
<p>手机号码:<input type="text"></p>
<p>个人描述:<input type="text"></p>

(2)按Enter键切换的效果

<script>
var inputs =document.getElementsByTagName('input');
for (var i =0; i<inputs.length; ++i) { inputs[i].onkeydown = function(e){
//获取事件对象的兼容处理
 var e=event ll window.event; 
//判断按下的是不是Enter键,如果是,让下一个input获取焦点
if (e.keyCode===13) { 
//遍历所有input框,找到当前input的下标 for (var i = 0; i < inputs.length; ++i) {
if (inputs[i] === this) { 
//计算下一个input元素的下标 
var index = i + 1 >= inputs.length?0 :i+1; 
break; 
// 如果下一个input还是文本框,则获取键盘焦点 
if (inputs[index].type === 'text') { 
inputs[index].focus(); // 触发 focus 事件 
</script>

  上述第2行用于获取所有的input元素对象,第3~23行通过遍历为每个input元素添加 keydown 事件,当发生事件时,判断当前键盘事件的ke eyCode属性值是否全等于13若是则表示用户的按键为Enter(回车),让下一个input元素获了取键盘焦点。否则不进行任何操作。
  其中,第10~16行代码通过遍历所有input元素获取发生键盘事件的input元素对象的下标,计算下一个input元素的下标。第18~20行代码表示 下一个input框是文本框时,为其获取键盘焦点。完成后按 Enter键即可进行切换测试。