JavaScript 事件入门知识


Posted in Javascript onApril 13, 2015

JavaScript事件是由访问Web页面的用户引起的一系列操作;
例如:用户点击;当用户执行某些操作的时候,再去执行一系列代码;

一 事件介绍

 事件一般是用于浏览器和用户操作进行交互;最早是IE和Netscape Navigator中出现,作为分担服务器端元算负载的一种手段;
 而DOM2级规范开始尝试以一种符合逻辑的方式标准化DOM事件;
 IE9/Firefox/Opera/Safari和Chrome全部已经实现了"DOM2级事件"模块的核心部分;
 IE8之前浏览器仍然使用其专有事件模型;
 JavaScript有三种事件模型:内联模型/脚本模型和DOM2模型;

二 内联模型(HTML事件处理程序) 

这种模型是最传统的简单的一种处理事件的方法;
在内联模型中,事件处理函数是HTML标签的一个属性,用于处理指定事件;
虽然内联在早期使用较多,但它是和HTML混写的,并没有与HTML分离;

在HTML中把事件处理函数作为属性执行JS代码;
<input type="button" value="按钮" onclick="alert('Lee');" /> 注意单双引号;
在HTML中把事件处理函数作为属性执行JS函数;
<input type="button" value="按钮" onclick="box();" /> 执行JS的函数;
PS:函数不得放到window.onload里面,这样就看不见了; 

三 脚本模型(DOM0级事件处理程序)

 

// 由于内联模型违反了HTML和JavaScript代码层次分离的原则;
// 我们可以在JavaScript中处理事件,这种处理方式就是脚本模型;
  var input = document.getElementsByTagName('input')[0];     // 得到input对象;
  input.onclick = function(){                  // 匿名函数执行;
    alert('Lee');              
  }
  // PS:通过匿名函数,可以直接触发对应的代码;
  //  也可以通过指定的函数名赋值的方式来执行函数(赋值的函数名不要跟括号);
  input.onclick = box;                      // 把匿名函数赋值给事件处理函数;
  input.onclick = null;                     // 删除事件处理程序;

  四 事件处理函数

  // JavaScript可以处理的事件类型为:鼠标事件/键盘事件/HTML事件;
JavaScript事件处理函数及其使用列表
事件处理函数 影响的元素 何时发生
onabort 图像 当图像加载被中断时;
onblur 窗口/框架/所有表单对象 当焦点从对象上移开时;
onchange 输入框/选择框/文本域 当改变一个元素的值且失去焦点时;
onclick 链接/按钮/表单对象/图像等 当用户单击对象时;
ondblclick 链接/按钮/表单对象 当用户双击对象时;
ondragdrop 窗口 当用户将一个对象拖放到浏览器窗口时;
onError 窗口/框架/所有表单对象 当脚本中发生语法错误时;
onfocus 窗口/框架/所有表单对象 当单击鼠标或将鼠标移动聚焦到窗口或框架时;
onkeydown 文档/图像/链接/表单 当按键被按下时;
onkeypress 文档/图像/连接/表单 当按键被按下然后松开时;
onkeyup 文档/图像/链接/表单 当按键被松开时;
onload 主体/框架集/图像 文档或图像加载后;
onunload 主体/框架集 文档或框架集卸载后;
onmouseout 链接 当图标移除链接时;
onmouseover 链接 当鼠标移到链接时;
onmove 窗口 当浏览器窗口移动时;
onreset 表单复位按钮 单击表单的reset按钮;
onresize 窗口 当改变浏览器窗口大小时;
onselect 表单元素 当选择一个表单对象时;
onsubmit 表单 当发送表格到服务器时;
// PS:对于每一个事件,它都有自己的触发范围和方式,事件处理将失效;

1.鼠标事件,页面所有元素都可触发

(1).click:当用户单击鼠标按钮或按下回车键时触发;
    input.onclick = function(){
        alert('Lee');
    };

(2).dblclick:当用户双击鼠标按钮时触发;
    input.ondblclick = function(){
        alert('Lee');
    }

(3).mousedown:当用户按下鼠标还未弹起时触发;
    input.onmousedown = function(){
        alert('Lee');
    }

(4)mouseup:当用户释放鼠标按钮时触发;
    input.onmouseup = function(){
        alert('Lee');
    }

(5).mouseover:当鼠标移到某个元素上方时触发;
    input.onmouseover = function(){
        alert('Lee');
    }

(6).mouseout:当鼠标移出某个元素上方时触发;
    input.onmouseout = function(){
        alert('Lee');
    }

(7).mousemove:当鼠标指针在元素上移动时触发;
    input.onmousemove = function(){
        alert('Lee');
    }

2.键盘事件

 (1).keydown:当用户按下键盘上任意键触发,如果按住不放,会重复触发;
    onkeydown = function(){
        alert('Lee');
    }

(2).keypress:当用户按下键盘上的字符键触发,如果按住不放,会重复触发;
    onkeypress = function(){
        alert('Lee');
    }

(3).keyup:当用户释放键盘上的键触发;
    onkeyup = function(){
        alert('Lee');
    }

3.HTML事件

(1).load:当页面完全加载后(包括所有图像/JavaScript文件/CSS文件等外部资源),就会触发window上面的load事件;
window.onload = function(){
alert('Lee');
}

// 图像上面也可以触发load事件,无论是在DOM中的图像元素还是HTML中的图像元素;
// 因此可以在HTML中为任何图像指定onload事件处理程序;
<img src='smile.client.gif' onload="alert('Image loaded.')" >
// PS:新图像元素不一定是从添加到文档后才开始下载,只要设置src属性就会开始下载;

// <script>元素也会触发load事件,以便开发人员确定动态加载的JavaScript文件是否加载完毕;
// 与图像不同,只有在设置了<script>元素的src属性并将该元素添加到文档后,才会开始下载JavaScript文件;

 (2).unload:当文档被完全卸载后触发;
 // 只要用户从一个页面切换到另一个页面,就会发生unload事件;
 // 而利用这个事件最多的情况是清除引用,以避免内存泄漏;
     window.onunload = function(){
         alert('Lee');
     }
(3).select:当用户选择文本框(input或textarea)内容改变且失去焦点后触发;
     input.onselect = function(){
         alert('Lee');
     }
(4).change:当文本框(input或textarea)内容改变且失去焦点后触发;
     input.onchange = function(){
         alert('Lee');
     }
(5).focus:当页面或元素获得焦点时在window及相关元素上面触发;这个事件不会冒泡;
     input.onfocus = function(){
         alert('Lee');
     }
(6).blur:当页面或元素失去焦点时在window及相关元素上触发;这个事件不会冒泡;
     input.onblur = function(){
         alert('Lee');
     }
(7).submit:当用户点击提交按钮在<form>元素上触发;
     form.onsubmit = function(){
         alert('Lee');
     }

(8).reset:当用户点击重置按钮在<form>元素上触发;
    form.onreset = function(){
        alert('Lee');
    }

(9).resize:当浏览器窗口被调整到一个新的高度或宽度时,就会触发resize事件;

// 这个事件在window(窗口)上触发;浏览器窗口最大化或最小化也会触发resize事件;
// IE/Safari/Chrome和Opera会在浏览器变化时不断触发resize事件;
// Firefox则只会在用户停止调整窗口大小时才会触发resize事件;
    window.onresize = function(){
        alert('Lee');
    }

(10).scroll:当用户滚动滚动条的元素使触发;
    window.onscroll = function(){
        alert('Lee');
    }

Javascript 相关文章推荐
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
Sep 15 Javascript
Function.prototype.call.apply结合用法分析示例
Jul 03 Javascript
JavaScript使用push方法添加一个元素到数组末尾用法实例
Apr 06 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
Sep 02 Javascript
基于jQuery实现页面搜索功能
Mar 26 Javascript
JS简单实现无缝滚动效果实例
Aug 24 Javascript
前端框架Vue.js构建大型应用浅析
Sep 12 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
Oct 29 Javascript
AngularJS前端页面操作之用户修改密码功能示例
Mar 27 Javascript
AngularJS实用基础知识_入门必备篇(推荐)
Jul 10 Javascript
让网站自动生成章节目录索引的多个js代码
Jan 07 Javascript
JavaScript位置参数实现原理及过程解析
Sep 14 Javascript
JavaScript 动态加载脚本和样式的方法
Apr 13 #Javascript
JavaScript DOM元素尺寸和位置
Apr 13 #Javascript
JavaScript DOM操作表格及样式
Apr 13 #Javascript
JavaScript DOM进阶方法
Apr 13 #Javascript
JavaScript DOM基础
Apr 13 #Javascript
JavaScript 浏览器对象模型BOM使用介绍
Apr 13 #Javascript
JavaScript 匿名函数和闭包介绍
Apr 13 #Javascript
You might like
php实现统计邮件大小的方法
2013/08/06 PHP
php发送与接收流文件的方法
2015/02/11 PHP
Nigma vs Alliance BO5 第三场2.14
2021/03/10 DOTA
走出JavaScript初学困境—js初学
2008/12/29 Javascript
开发跨浏览器javascript常见注意事项
2009/01/01 Javascript
基于JQuery框架的AJAX实例代码
2009/11/03 Javascript
解析Javascript中中括号“[]”的多义性
2013/12/03 Javascript
js浮点数保留两位小数点示例代码(四舍五入)
2013/12/26 Javascript
jQuery学习总结之jQuery事件
2014/06/30 Javascript
BootStrap 智能表单实战系列(五) 表单依赖插件处理
2016/06/13 Javascript
优雅的elementUI table单元格可编辑实现方法详解
2018/12/23 Javascript
使用js在layui中实现上传图片压缩
2019/06/18 Javascript
Electron + vue 打包桌面操作流程详解
2019/06/24 Javascript
ant design实现圈选功能
2019/12/17 Javascript
H5+css3+js搭建带验证码的登录页面
2020/10/11 Javascript
Python multiprocessing模块中的Pipe管道使用实例
2015/04/11 Python
pandas DataFrame数据转为list的方法
2018/04/11 Python
Python解析Excle文件中的数据方法
2018/10/23 Python
python实现给scatter设置颜色渐变条colorbar的方法
2018/12/13 Python
Django中ORM外键和表的关系详解
2019/05/20 Python
Python微信操控itchat的方法
2019/05/31 Python
python生成大写32位uuid代码
2020/03/03 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
Python爬虫教程知识点总结
2020/10/19 Python
全球最大的中文旅行网站:去哪儿网
2017/11/16 全球购物
马来西亚太阳镜、眼镜和隐形眼镜网上商店:Focus Point
2018/12/13 全球购物
澳洲Chemist Direct药房中文网:澳洲大型线上直邮药房
2019/11/04 全球购物
与UNIX有关的几个名词
2015/09/17 面试题
洗发水广告词
2014/03/13 职场文书
小学英语教师先进事迹
2014/05/28 职场文书
2014年社区重阳节活动策划方案
2014/09/16 职场文书
2015年社区居委会工作总结
2015/05/18 职场文书
技术入股协议书
2016/03/22 职场文书
七个Python必备的GUI库
2021/04/27 Python
pytorch中的model.eval()和BN层的使用
2021/05/22 Python
深入理解margin塌陷和margin合并的解决方案
2021/06/26 HTML / CSS