JavaScript学习笔记6

34 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第16天,点击查看活动详情

3、事件处理程序

事件处理程序即对事件的响应代码。可以是一行或几行脚本语句,如果代码量较大,则应用自定义函数包装这些脚本代码。

事件与事件处理程序的关联方式一共有三种:

  • 一是通过标签的事件属性
  • 二是通过对象的事件属性
  • 三是attachEvent或addEventListener

①标签的事件属性示例:

function body_load(){
 alert("body标签的onload属性 .页面加载");
}
<body οnlοad="body_load();"></body>

// onload方法是加载时触发该动作,上面代码的含义是在页面加载body标签时调用javascript的body_load()方法,而该方法运行结果是弹出一个警告对话框,消息内容为 body标签的onload属性 .页面加载。

②对象的事件属性示例:

<script>
对象.事件属性 = 事件处理程序;
</script> 

function window_resize(){
 alert("Window对象的onresize事件.窗口尺寸变化");
}
 window.onresize = window_resize;

// 以上javascript代码的含义是:浏览器窗口尺寸发生变化时,执行window_resize方法体中的事件处理程序代码。

4、事件对象

事件发生时,可能需要获得与此事件相关的信息,比如鼠标事件发生时鼠标的坐标,键盘事件发生是哪个键引起的,事件发生在哪个对象上等等。这些与事件的状态相关的信息可以Event事件对象获得。

①事件对象的获取示例

注意:要获得Event事件对象,可以在事件处理程序中访问Window对象的event属性,即window.event ,但这种方式仅适用于IE浏览器。在面向其他浏览器的代码中,应向事件处理函数传递event实参,这样在事件处理函数中可用形参表示Event对象。

<html>
<head>
    <script>
        function fun(evt) {
            //[事件处理程序,在这里可用形参evt表示Event事件对象]
            alert('evt.button返回当事件被触发时,哪个鼠标按钮被点击:' + evt.button);
            alert(' evt.clientX返回当事件被触发时,鼠标指针相对于页面正文的水平坐标:' + evt.clientX);
            alert('evt.clientY返回当事件被触发时,鼠标指针相对于页面正文的垂直坐标:' + evt.clientY);
            alert('evt.screenX返回当事件被触发时,鼠标指针相对于页面正文的垂直坐标:' + evt.screenX);
            alert('evt.screenY返回当事件被触发时,鼠标指针相对于页面正文的垂直坐标:' + evt.screenY);
            alert('evt.ctrlKey返回当事件被触发时,"CTRL" 键是否被按下:' + evt.ctrlKey);
            alert('evt.shiftKey返回当事件被触发时,"SHIFT" 键是否被按下:' + evt.shiftKey);
            alert('evt.altKey返回当事件被触发时,"ALT" 键是否被按下:' + evt.altKey);
            alert('evt.type返回事件的类型:' + evt.type);
            alert('evt.keyCode返回键的虚拟键盘代码或此键的字符的Unicode码。:' + evt.keyCode);
        }
    </script>
</head>

<body>
    <input type="button" id="btn" value="点我" οnclick="fun(event);" />
</body>

</html>