JavaScript -- 事件

迷南。 2022-06-11 08:54 394阅读 0赞

事件处理程序

HTML事件处理程序

  1. <input type="button" value="Click Me" onclick="alert('Clicked')" />

或者

  1. <script type="text/javascript"> function showMessage(){ alert("Hello world!"); } </script>
  2. <input type="button" value="Click Me" onclick="showMessage()" />

缺点:HTML和JS紧密耦合。

DOM0级事件处理程序

  1. var btn = document.getElementById("myBtn");
  2. btn.onclick = function(){
  3. alert("Clicked");
  4. alert(this.id); //"myBtn"
  5. };
  6. btn.onclick = null; // 删除事件处理程序

DOM2级事件处理程序

  1. addEventListener() & removeEventListener()

这两个函数都接受3个参数:
要处理的事件名,作为事件处理程序的函数,一个布尔值(true表示在捕获阶段处理事件,false表示在冒泡阶段调用事件处理程序)。

  1. var bin = document.getElementById("myBtn");
  2. btn.addEventListener('click', function(){
  3. alert(this.id);
  4. }, false);

使用DOM2的好处是可以添加多个事件处理程序。

通过removeEventListener可以移除事件处理函数,这也就意味着,像上文那样添加的匿名函数将无法移除。

IE事件处理程序

IE实现了与DOM中类似的两个方法:attachEvent()和detachEvent()。

  1. var btn = document.getElementById("myBtn");
  2. btn.attachEvent("onclick", function(){
  3. alert("Clicked");
  4. });

注意:在attachEvent方法中,this等于window。

事件对象

事件对象的属性/方法一览
这里写图片描述

这里写图片描述

只有在事件处理程序执行期间,event对象才会存在。

模拟事件

事件经常由用户操作或者通过其他浏览器功能来出发,但是其实也可以使用JS在任意时刻来出发特定的事件。

DOM中的事件模拟

可以在document对象上使用createEvent方法创建event对象,这个方法接收一个参数:即表示要创建的事件类型的字符串。这个字符串可以是:
UIEvents:一般化的UI事件
MouseEvents:一般化的鼠标事件
MutationEvents:一般化的DOM变动事件
HTMLEvents:一般化的HTML事件

模拟事件的最后一步就是触发事件,使用方法:dispatchEvent。调用该方法时,需要传入一个参数,即表示要触发事件的event对象。

模拟鼠标事件

  1. var btn = document.getElementById("myBtn");
  2. // 创建事件对象
  3. var event = document.createEvent("MouseEvents");
  4. // 初始化事件对象
  5. event.initMouseEvent("click", true, true, document.defaultView, 0, 0, 0, 0, 0,false, false, false, false, 0, null);
  6. // 触发事件
  7. btn.dispatchEvent(event);

模拟其他事件

  1. var event = document.createEvent("HTMLEvents");
  2. event.initEvent("focus", true, false);
  3. target.dispatchEvent(event);

自定义DOM事件

自定义事件不是由DOM原生触发的,它的目的是让开发人员创建自己的事件。

  1. var div = document.getElementById("myDiv"),event;
  2. EventUtil.addHandler(div, "myevent", function(event){
  3. alert("DIV: " + event.detail);
  4. });
  5. EventUtil.addHandler(document, "myevent", function(event){
  6. alert("DOCUMENT: " + event.detail);
  7. });
  8. if (document.implementation.hasFeature("CustomEvents", "3.0")){
  9. event = document.createEvent("CustomEvent");
  10. event.initCustomEvent("myevent", true, false, "Hello world!");
  11. div.dispatchEvent(event);
  12. }

IE事件模拟

  1. var textbox = document.getElementById("myTextbox");
  2. var event = document.createEventObject();
  3. event.altKey = false;
  4. event.ctrlKey = false;
  5. event.shiftKey = false;
  6. event.keyCode = 65;
  7. textbox.fireEvent("onkeypress", event);

发表评论

表情:
评论列表 (有 0 条评论,394人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JavaScript事件

    什么是事件流 javaScript与HTML之间的交互是通过事件实现的。事件,就是文档或浏览器窗口中发生的一些特定的交互瞬间。可以使用侦听器(或处理程序)来预订事件,以便

    相关 JavaScript 事件

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

    相关 <javascript>事件

    事件通常分为:事件源和响应行为。 事件在触发后弹出响应块与函数配合使用,这样我们可以通过发生的事件来驱动函数执行. 1、js的常用事件 ![常见事件][SouthEas

    相关 JavaScript-事件

    事件(Event)是JavaScript应用跳动的心脏,当我们与浏览器中Web页面进行某些类型的交互时,事件就发生了。 事件可能是用户在某些内容上的点击、鼠标经过某个特

    相关 JavaScript 事件

    一、基本概念 0x1 事件 1、定义 事件是可以被 JavaScript 侦测到的行为,通俗的讲就是当用户与Web页面进行某些交互时,解释器就会创建响应的eve