JavaScript事件类型(学过的以及网上了解的)

323 阅读5分钟

JavaScript事件类型

Web浏览器中可能发生的事件有很多类型。这里将主要将下面几种常用的事件类型:(有的是从网上借鉴的,暂时先这样,有时间看懂)

UI事件

第一部分:UI事件

UI事件中UI即(User Interface,用户界面),当用户与页面桑拿的元素交互时触发。

UI事件中主要包括load,unload,abort,error,select,resize,scroll事件。

1.load事件

此事件为当页面完全加载完之后(包括所有的图像、js文件、css文件等外部资源),就会触发window上面的load事件。

这个事件是JavaScript中最常用的事件,比如我们经常会使用window.onload=function(){};这种形式,即当页面完全加载完之后执行其中的函数。

   另外,之前一直都不知道,这个事件还可以用在其他元素上,比如图像元素,如下所示:

<img src="smile.png" onload="alert('loaded')">  
2.unload事件

显然,这个事件是与load事件相对的。在文档被完全卸载后触发。用户从一个页面切换到另一个页面就会触发unload时间。利用这个事件最多的情况是清楚引用,避免内存泄漏。

   这个事件同样有两种方式来指定。一种是JavaScript方式,使用EventUtil.addHandler();另一种就是在body元素中添加一个特性。

     值得注意的是,一定要小心编写onload事件中的代码,因为它是在页面卸载后才触发,所以说页面加载后存在的那些对象,在onload触发之后就不一定存在了!

<body onload="alert('changed')">
3.resize事件

当调整浏览器的窗口到一个新的宽度或高度时,就会触发resize事件。这个事件在window(窗口)上面触发。 因此同样可以通过JS或者body元素中的onresize特性来指定处理程序。  

<body onresize="alert('changed')">

    写了这句代码,那么浏览器的大小发生改变时就会弹出窗口。

4.scroll事件

这个事件会在文档被滚动期间重复被触发,所以应当尽量保持事件处理程序的代码简单。

焦点事件

第二部分:焦点事件

  焦点事件会在页面元素获得或失去焦点时触发。主要有下面几种:

  1. blur   在元素失去焦点时触发。这个事件不冒泡,所有浏览器都支持。
  2. focus   在元素获得焦点时触发。这个事件不冒泡,所有浏览器都支持。
  3. focusin  在元素获得焦点时触发。这个事件冒泡, 某些浏览器不支持。
  4. focusout 在元素失去焦点时触发。这个事件冒泡,某些浏览器不支持。

  注意:即使blur和focus不冒泡,也可以在捕获阶段侦听到他们。

鼠标与滚轮事件

第三部分:鼠标与滚轮事件

  鼠标事件是Web开发中最常用的一类事件,因为鼠标是最主要的定位设备。

  • click---用户单击鼠标左键或按下回车键触发
  • dbclick---用户双击鼠标左键触发。
  • mousedown---在用户按下了任意鼠标按钮时触发。
  • mouseenter---在鼠标光标从元素外部首次移动到元素范围内时触发。此事件不冒泡
  • mouseleave---元素上方的光标移动到元素范围之外时触发。不冒泡
  • mousemove---光标在元素的内部不断的移动时触发。
  • mouseover---鼠标指针位于一个元素外部,然后用户将首次移动到另一个元素边界之内时触发。
  • mouseout---用户将光标从一个元素上方移动到另一个元素时触发。   
  • mouseup---在用户释放鼠标按钮时触发。

键盘与文本事件

第四部分:键盘和文本事件

  该部分主要有下面几种事件:

  1. keydown:当用户按下键盘上的任意键时触发。按住不放,会重复触发。
  2. keypress:当用户按下键盘上的字符键时触发。按住不放,会重复触发。
  3. keyup:当用户释放键盘上的键时触发。
  4. textInput:这是唯一的文本事件,用意是将文本显示给用户之前更容易拦截文本。

这几个事件在用户通过文本框输入文本时才最常用到。

键盘事件:

document.addEventListener("keydown",handleKeyDownClick,false);

      function handleKeyDownClick(event) {
          var e = event||window.event||arguments.callee.caller.arguments[0];
          if (e&&e.keyCode == 13) {
              alert("keydown");
          }
      }    
  • 复合事件
  • 变动事件
  • HTML5事件
  • 设备事件
  • 触摸与手势事件

js和jQuery的区别

一、入口函数的不同

  1、js:window.onload = function(){内部放js}   

  实质就是一个事件,拥有事件的三要素,事件源,事件,事件处理程序。等到所有内容,以及我们的外部图片之类的文件加载完了之后,才会去执行。只能写一个入口函数;

  2、jQuery:(function())或者(function(){})或者(document).ready(function(){})是在 html所有标签都加载之后,就回去执行,可以写多个;

二、获取元素的方式不同

  1、js:常用的以下几个,除了id,其他的结果都是伪数组;

  2、jQuery:$(" ")通过和css雷同的选择器方式来获取元素。得到的是jquery对象(dom元素的数组,外加其他一些成员)。即使写的是id,唯一的,得到的对象都不是单一的;

  本质上jquery方式和qs方式都是获取DOM数组, 只不过jquery会多一些其他成员,DOM数组的每一个成员注册事件不能像jquery一样直接注册, 必须分别给每个元素注册;

三、DOM对象和jquery对象的相互转换

  1、jQuery对象转换成DOM对象,方式一:(“#btn”)[0],方式二:(“#btn”).get(0)得到dom对象;

  2、eq(0)得到jquery对象

  DOM对象转换成jQuery对象:

  $(document) -> 把DOM对象转成了jQuery对象

  var btn = document.getElementById(“btn”);

  btn -> (btn)(btn);(this)

  Jquery得到的元素类型都是对象,内容是伪数组,无论是不是唯一的元素;

四、事件处理程序不同

  1、 js:document.getElementById(“id”).onclick = function(){ // 语句 }

   document.getElementById(“id”).addEventListener("click",function(){})

   onclick,onfoucs,onblur,fouce(自动获得),select(自动选择文本域内容),onmouseover, onmouseout,

   oninput/onpropertychange用户输入事件,onchange(下拉菜单select内容发生改变时发生事件,如果内容为 几,那么做出什么反应),

  2、jquery:$(“#id”).click(function(){     // 语句   });