JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件

yizhihongxing

下面是JavaScript高级程序设计阅读笔记(十八)js跨平台的事件的详细攻略:

1. 事件处理程序

事件是指用户或浏览器自身执行的某种动作。JS可以通过事件处理程序来响应这种动作。

1.1 HTML事件处理程序

HTML事件处理程序是在标签中通过指定事件处理代码的方式来处理事件。

例如在HTML中定义一个按钮:

<button onclick="alert('Hello World!')">Click me!</button>

上述代码中,当单击按钮时,会弹出一个对话框,并显示"Hello World!"。

1.2 DOM0级事件处理程序

DOM0级事件处理程序是在JS中直接为DOM元素指定事件处理函数,这种方式只能处理一个事件处理程序。

例如:

var btn = document.getElementById('myBtn');
btn.onclick = function(){
    alert('Hello World!');
}

上述代码中,定义了一个btn的onclick事件处理程序,当单击按钮时,页面弹出一个对话框并显示“Hello World!”。

1.3 DOM2级事件处理程序

DOM2级事件处理程序是在JS中通过addEventListener()方法添加监听器,可以添加多个事件处理程序。

例如:

var btn = document.getElementById('myBtn');
btn.addEventListener('click', function(){
    alert('Hello World!');
}, false);

上述代码中,通过addEventListener()方法注册click事件处理程序,也可以通过removeEventListener()方法移除监听器。

2. 事件对象

在事件处理程序中,可以通过事件对象来获取与事件相关的信息。

例如:

var btn = document.getElementById('myBtn');
btn.onclick = function(event){
    var target = event.target; // 获取事件目标
    var type = event.type; // 获取事件类型
    var pageX = event.pageX;
    var pageY = event.pageY;
}

上述代码中,定义了一个btn的onclick事件处理程序,并且传入了event参数,用event.target获取事件目标,event.type获取事件类型等。

3. 跨浏览器处理事件

不同浏览器对事件处理可能存在兼容性问题,通过一些技术手段可以跨浏览器处理事件,例如通过一个函数addHandler()来添加处理程序:

function addHandler(element, type, handler){
    if(element.addEventListener){
        element.addEventListener(type, handler, false); // DOM2级事件处理程序
    }else if(element.attachEvent){
        element.attachEvent("on" + type, handler); // IE事件处理程序
    }else{
        element["on" + type] = handler; // DOM0级事件处理程序
    }
}

上述代码中,定义了一个addHandler()方法,可以根据兼容性自动使用不同的方法注册事件处理程序。这样可以保证在不同的浏览器中都能正确处理事件。

示例1

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>事件处理程序示例1</title>
  </head>
  <body>
    <button id="btn">点击</button>
    <script type="text/javascript">
      var btn = document.getElementById('btn');
      addHandler(btn, 'click', function(){
        alert('Hello World!');
      });
      function addHandler(element, type, handler){
        if(element.addEventListener){
            element.addEventListener(type, handler, false); // DOM2级事件处理程序
        }else if(element.attachEvent){
            element.attachEvent("on" + type, handler); // IE事件处理程序
        }else{
            element["on" + type] = handler; // DOM0级事件处理程序
        }
      }
    </script>
  </body>
</html>

上述代码中,定义了一个按钮,在单击按钮时通过addHandler()方法注册click事件处理程序。因为addHandler()方法可以根据兼容性自动使用不同的方法注册事件处理程序,所以可以跨浏览器处理事件。

示例2

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>事件对象示例2</title>
  </head>
  <body>
    <button id="btn">点击</button>
    <script type="text/javascript">
      var btn = document.getElementById('btn');
      btn.onclick = function(event){
        var target = event.target; // 获取事件目标
        var type = event.type; // 获取事件类型
        var pageX = event.pageX;
        var pageY = event.pageY;
        alert('target:' + target + ', type:' + type + ', pageX:' + pageX + ', pageY:' + pageY);
      }
    </script>
  </body>
</html>

上述代码中,定义了一个按钮,在单击按钮时打印事件目标、事件类型、页面X坐标和页面Y坐标等信息。因为在事件处理程序中可以通过事件对象来获取与事件相关的信息,所以可以方便地进行调试和处理事件。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • JavaScript 实现HTML DOM增删改查操作的常见方法详解

    JavaScript 实现HTML DOM增删改查操作的常见方法详解 1. DOM简介 DOM全称“Document Object Model”,中文翻译为文档对象模型,是一种对文档结构化的方式表达,即将文档中的每一个元素都抽象成为一个对象,便于JavaScript等脚本语言进行操作。 DOM是Web页面的编程接口,可以使用JavaScript、VBScri…

    JavaScript 2023年6月10日
    00
  • 个人网站留言页面(前端jQuery编写、后台php读写MySQL)

    下面给出关于“个人网站留言页面(前端jQuery编写、后台php读写MySQL)”的完整攻略。 步骤一:数据库设计 首先需要通过设计数据库来存储留言信息。假设我们需要存储“留言者姓名”、“留言内容”、“留言时间”等信息,可以创建一个名为”messageBoard”的MySQL数据库,并在其中新建一个名为”messages”的表来存储留言。 CREATE DA…

    JavaScript 2023年6月11日
    00
  • JavaScript高级 ES7-ES13 新特性详解

    JavaScript 高级 ES7-ES13 新特性详解 在这里,我们将介绍 JavaScript ES7 到 ES13 所引入的一些新特性。 1. ES7 新特性 1.1 includes 方法 includes() 方法可用于判断一个数组是否包含一个特定的值,并返回 true 或 false。这个方法在 ES7 中被正式引入,可以通过以下的方式来调用: …

    JavaScript 2023年6月10日
    00
  • asp.net+js实现批量编码与解码的方法

    以下是“asp.net+js实现批量编码与解码的方法”的完整攻略。 一、背景 在一些网站开发中,可能会遇到需要对一些数据进行批量编码或者批量解码的需求。例如,对于一些包含特殊字符的字符串进行URL编码,或者将经过base64编码的数据进行解码等等。本篇攻略将介绍如何通过asp.net和javascript实现这些功能。 二、URL编码与解码 URL编码 在a…

    JavaScript 2023年5月19日
    00
  • JS获取字符对应的ASCII码实例

    首先我们来说明一下什么是ASCII码。ASCII码是一种常见的字符编码方案,使用7位二进制数来表示128个字符(包括字母、数字、符号等)。 接下来,我们将介绍如何使用JavaScript获取字符对应的ASCII码。 1. 使用charCodeAt()方法 charCodeAt()方法返回指定位置字符的Unicode编码,我们可以使用charCodeAt()方…

    JavaScript 2023年5月28日
    00
  • 关于JavaScript实现动画时动画抖动的原因与解决方法

    关于 JavaScript 实现动画时动画抖动的原因与解决方法,我给你详细讲解。 原因 动画抖动通常是由于浮点数像素值引起的。由于屏幕在每个像素处都是有限制的,所以如果动画的像素值为小数,则会做出近似处理,这可能会导致动画抖动。 举个例子,在动画过程中,由于动画属性的值改变比较频繁,浮点数像素值也变得更加不可避免,浏览器会在每次重绘时尝试平滑过渡,这样就会导…

    JavaScript 2023年6月10日
    00
  • javascript不同类型数据之间的运算的转换方法

    下面是关于 JavaScript 不同类型数据之间的运算的转换方法的攻略: 类型转换 JavaScript 是一种弱类型语言,允许不同类型之间的运算。但是,不同的类型进行运算时会出现意想不到的结果。为了确保正确的运算结果,我们需要将不同类型的数据转换成相同的类型。 JavaScript 提供了三种类型转换方法: 转换为字符串 转换为数值 转换为布尔值 转换为…

    JavaScript 2023年6月11日
    00
  • JSDoc 介绍使用规范JsDoc的使用介绍

    下面是关于JSDoc的完整攻略。 JSDoc 介绍 JSDoc是一个用于生成JavaScript代码文档的工具,它基于JavaScript的文档注释来生成文档。JSDoc支持多种标记,并且可以生成HTML、Markdown等多种格式的文档,因此广泛应用于JavaScript项目的文档生成中。 使用规范 以下是一些JSDoc的使用规范: 常见标记 @param…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部