在原生js中的事件监听方法

一、传统事件绑定方法
我们在学习的时候,最初接触的事件绑定方式大多是传统事件绑定方法。传统事件绑定方法事例如下:

window.οnlοad=function(){alert("页面已加载");
}
document.getElementById("btn").οnclick=function(){alert("按钮被点击");
}
document.οnmοusemοve=function(){console.log("鼠标在移动");
}

  

传统事件绑定方法的特点如下:

  1. 事件名称之间一定要加上on,比如:onclick、onload、onmousemove。

  2. 兼容主流的浏览器,包括低版本的IE。

  3. 当同一个元素绑定多个事件时,只有最后一个事件会被添加,并且传播模式只能是冒泡模式。

二、addEventListener()
方法事例:

window.addEventListener('load',init,false);function init(){alert("页面加载成功");
}
// 下面写法与上面等价
window.addEventListener('load',function(){alert("页面加载成功");
},false);

  

addEventListener()方法特点:

element.addEventListener(event, function, useCapture)中的第三个参数可以控制指定事件是否在捕获或冒泡阶段执行。true - 事件句柄在捕获阶段执行。false- 默认- 事件句柄在冒泡阶段执行。

addEventListener() 可以给同一个元素绑定多个事件,不会发生覆盖的情况。如果给同一个元素绑定多个事件,那么采用先绑定先执行的规则。

addEventListener() 在绑定事件的时候,事件名称之前不需带 on 。

注意该方法的兼容性,如果要兼容 IE6-8 ,不能使用该方法,可以采用以下方法。

可以使用 removeEventListener() 来移除之前绑定过的事件。

// 向 <div> 元素添加事件句柄
document.getElementById("myDIV").addEventListener("mousemove", myFunction);

// 移除 <div> 元素的事件句柄
document.getElementById("myDIV").removeEventListener("mousemove", myFunction);

三、attachEvent()
方法事例:
window.attachEvent('onload',function(){
  alert("页面加载成功");
});

attachEvent()方法特点:

attachEvent是 IE 有的方法,它不遵循W3C标准,而其他的主流浏览器如FF等遵循W3C标准的浏览器都使用addEventListener,所以实际开发中需分开处理。

attachEvent()是 后绑定先执行。

绑定时间时,attachEvent必须带 on,如 onclick,onmouseover 等

 

 

在我们实际的项目里面,在使用原生js绑定事件的时候,大多数情况下会使用 addEventListener() ,因为目前来说很少有人使用低版本IE了,大多数项目不会要求兼容 IE6-8 。
如果项目要求兼容 IE6-8 ,这个时候可以考虑 attachEvent(),但是不建议这样使用,这样的话需要些兼容代码,不仅繁琐而且容易出错,这个时候就建议使用jQuery库直接进行事件绑定,jQuery已经帮我们做好了兼容处理的工作,直接饮用,提高效率。
---------------------

原文来自:https://blog.csdn.net/fengzhen8023/article/details/81453753

 

转载于:https://www.cnblogs.com/zz-com/p/9959259.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249019.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySql修改数据库编码为UTF8

mysql 创建 数据库时指定编码很重要&#xff0c;很多开发者都使用了默认编码&#xff0c;乱码问题可是防不胜防。制定数据库的编码可以很大程度上避免倒入导出带来的乱码问题。 网页数据一般采用UTF8编码&#xff0c;而数据库默认为latin 。我们可以通过修改数据库默认编码方式…

第六次作业(C语言)

心得体会 该题主要涉及知识点有&#xff1a;1、函数的定义&#xff1b;2、函数的调用&#xff08;即prime函数的调用&#xff09;&#xff1b;3、素数的判断&#xff1b;4、大小排序。 看到题时我首先想到了嵌套循环&#xff0c;可是仔细一看题目要求的是用prime函数的调用&…

Javascript系列——对象元素的数组去重实现

概要 这是一篇记录文&#xff0c;记录数组操作对象去重的实现。 需求 有这样一个数组 [{_id: 123,name: 张三 },{_id: 124,name: 李四 },{_id: 123,name: 张三 }] 实际上我们只需要 [{_id: 123,name: 张三 },{_id: 124,name: 李四 }] 去重 简单数组的去重 Array.from(new Set([…

关于__getattribute__

先看一个案例 class Tree(object):def __init__(self,name):self.namenameself.cateplantdef __getattribute__(self, item):if item大树:print(log 大树)return 我爱大树else:return object.__getattribute__(self,item)aaTree(rrrr) print(aa.name) print(aa.cate) 运行结果…

通过Navicat for MySQL远程连接的时候报错mysql 1130的解决方法

来源&#xff1a;互联网 作者&#xff1a;佚名 时间&#xff1a;10-16 18:41:20 【大 中 小】 错误代码是1130&#xff0c;ERROR 1130: Host xxx.xxx.xxx.xxx is not allowed to connect to this MySQL server 是无法给远程连接的用户权限问题 Navicat for mysql 1130错误 用…

Java Language Changes for Java SE 9

Java9引入了module模块的概念&#xff0c;是类与接口和数据资源的一种封装&#xff0c;并可以声明与其他模块的依赖关系。这里总结一下Java9带来的新特性。更简练的try-with-resources语句final Resource resource1 new Resource("resource1");//a final resourceRe…

ProtocolHandler继承体系

转载于:https://www.cnblogs.com/GooPolaris/p/10815072.html

mysql数据库存储过程及调用方法

mysql数据库存储过程及调用方法 mysql5.0以后就支持存储过程了&#xff0c;目前mysql的6.0Alpha版也已经推出。6.0不仅支持大型数据库如oracle等的绝大部分功 能&#xff0c;如存储过程、视图、触发器、job等等&#xff0c;而且修正了这些功能所存在的bug&#xff0c;其中6.0.1…

红蜻蜓

日本人なら一度は耳にしたことのある曲でしょう。忘れかけている里山の風景が目に浮かびます。このあたりは昔養蚕が盛んで、何処へ行っても桑畑があったものでしたが、最近はとんと見かけません。小さい頃、よく桑の実をつんで食べたものでした。&#xff08;このあたりでは&q…

elastic学习笔记

要点 不同工具之间版本匹配很重要由点及面&#xff0c;先实践起来再学细节的原理和使用 技术栈 laravel5.5框架scout组件elasticsearch6.3.0搜索引擎辅助 elasticsearch-head 查看集群数据可视化 中文分词插件Ik介绍 laravel是一款现代化的php框架es是搜索引擎es-head是管理查看…

mysql 存储过程中limit

mysql 存储过程中limit 1、mysql的高版本&#xff08;5.5&#xff09;&#xff0c;存储过程中的limit可以使用变量&#xff0c;如下&#xff1a;select * from student limit iStart,iNum; 2、mysql的低版本&#xff08;5.1&#xff09;&#xff0c;存储过程中的limit不能使用…

高频ES6

var promise new Promise((resolve, reject)> {if (操作成功) {resolve (value)}else{reject(error)} }) promise.than(function (value) {/*成功*/}, function(value) {/*失败*/}) Promise是异步编程的一种解决方案, 比传统的解决方案--回调函数和事件更加强大.由社区最早…

NodeJS+Express+MongoDB - 张果 - 博客园

目录 一、MongoDB 1.1、安装MongoDB 1.1.1、配置运行环境1.1.2、运行MongoDB1.2、数据库操作 1.2.1、创建数据库与查看数据库1.2.2、删除数据库1.2.3、插入数据1.2.4、查询数据1.2.5、修改1.2.6、删除二、NodeJS访问MongoDB 2.1、安装MongoDB访问驱动2.2、添加数据2.3、修改数…

一个好用的浏览器暗色浏览插件 Dark Reader

转载于:https://www.cnblogs.com/tyong/p/9973363.html

Android小测验感受

1.运行出现“...keeps stopping” 因为 前台变量“无值”而后台却进行“获取变量值” 2.switch(int,char...) case break;(不能忘) 3.转载于:https://www.cnblogs.com/tangxx1996/p/10825134.html

SpringMVC  注解式传递Ztree参数

前端页面JS处理&#xff1a; $("#save").click( function(){var zTree $.fn.zTree.getZTreeObj("treeDemo" );if(projectType "" || projectType null || projectType undefined){alert( "请选择项目类型&#xff01;" ); return…

实验 4 [bx]和 loop 的使用

实验结论 实验1&#xff1a;综合使用 loop,[bx]&#xff0c;编写完整汇编程序&#xff0c;实现向内存 b800:07b8 开始的连续 16 个字单元重复填充字数据 0403H。 1.源代码及实验结果 运行结果&#xff1a;屏幕中央出现一排红色的心❤。 2.将源代码程序中字数据 0403H→修改为 0…

linux开发工具之gcc

首先gcc编译链接的一个实例如下所示&#xff1a; 接下来看一下gcc的常见选项&#xff1a; gcc的使用示例&#xff1a; 转载于:https://www.cnblogs.com/wsw-seu/p/10826124.html

怎么解决eclipse报PermGen space异常的问题

怎么解决eclipse报PermGen space异常的问题 最近使用eclipse做开发&#xff0c;使用的服务器是tomcat&#xff0c;但在启动时报了Caused by: java.lang.OutOfMemoryError: PermGen space的异常。 这个错误很常见&#xff0c;于是配置tomcat下的catalina.bat&#xff0c;配置e…

org.hibernate.service.ServiceRegistryBuilder被弃用

看视频教程是这样写的: //创建配置对象Configuration config new Configuration().configure();//创建服务注册对象ServiceRegistry serviceRegistry new ServiceRegistryBuilder().applySettings(config.getProperties()).buildServiceRegistry();//创建会话工厂对象session…