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 相关文章推荐
为javascript添加String.Format方法
Aug 11 Javascript
通过下拉框的值来确定输入框是否可以为空的代码
Oct 18 Javascript
document.createElement()用法及注意事项(ff下不兼容)
Mar 13 Javascript
jQuery弹出(alert)select选择的值
Apr 21 Javascript
JS实现的省份级联实例代码
Jun 24 Javascript
JS实现同时搜索百度和必应的方法
Jan 27 Javascript
JavaScript常用脚本汇总(一)
Mar 04 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
Apr 01 Javascript
你有必要知道的25个JavaScript面试题
Dec 29 Javascript
angular实现图片懒加载实例代码
Jun 08 Javascript
Node.JS循环删除非空文件夹及子目录下的所有文件
Mar 12 Javascript
使用vue-infinite-scroll实现无限滚动效果
Jun 22 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函数serialize()与unserialize()用法实例
2014/11/06 PHP
php从文件夹随机读取文件的方法
2015/06/01 PHP
php源码分析之DZX1.5随机数函数random用法
2015/06/17 PHP
thinkPHP2.1自定义标签库的导入方法详解
2016/07/20 PHP
laravel手动创建数组分页的实现代码
2018/06/07 PHP
Ajax一统天下之Dojo整合篇
2007/03/24 Javascript
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
两个select之间option的互相添加操作(jquery实现)
2009/11/12 Javascript
JavaScript 学习笔记 Black.Caffeine 09.11.28
2009/11/30 Javascript
javascript+css 网页每次加载不同样式的实现方法
2009/12/27 Javascript
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
JSONP 跨域访问代理API-yahooapis实现代码
2012/12/02 Javascript
js通过元素class名字获取元素集合的具体实现
2014/01/06 Javascript
初始Nodejs
2014/11/08 NodeJs
jquery实现漫天雪花飞舞的圣诞祝福雪花效果代码分享
2015/08/20 Javascript
javascript生成img标签的3种实现方法(对象、方法、html)
2015/12/25 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
2016/05/24 Javascript
Vue.js进阶知识点总结
2018/04/01 Javascript
vue 百度地图(vue-baidu-map)绘制方向箭头折线实例代码详解
2020/04/28 Javascript
Vue中ref和$refs的介绍以及使用方法示例
2021/01/11 Vue.js
django2 快速安装指南分享
2018/01/05 Python
对Python中for复合语句的使用示例讲解
2018/11/01 Python
Tensorflow中的dropout的使用方法
2020/03/13 Python
Python浮点型(float)运算结果不正确的解决方案
2020/09/22 Python
Anaconda的安装与虚拟环境建立
2020/11/18 Python
python BeautifulSoup库的安装与使用
2020/12/17 Python
Bench加拿大官方网站:英国城市服装品牌
2017/11/03 全球购物
欧洲最大的滑雪假期供应商之一:Sunweb Holidays
2018/01/06 全球购物
日本热销NO.1胶原蛋白冻:Aishitoto爱希特多
2019/06/20 全球购物
购买原创艺术品:Zatista
2019/11/09 全球购物
实体的生命周期
2013/08/31 面试题
函授大专自我鉴定
2013/11/01 职场文书
毕业自我鉴定总结
2014/03/24 职场文书
驾驶员安全责任书
2014/07/22 职场文书
人与自然观后感
2015/06/16 职场文书
在Docker容器中部署SQL Server
2022/04/11 Servers