js框架开发之旅--事件二

2024-06-21 20:48
文章标签 js 之旅 框架 事件 开发

本文主要是介绍js框架开发之旅--事件二,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

由于老外的叙事实在罗嗦,因此我以后仅仅翻译重点的东西,或者自己进行整理总结,如有错误之处,还请看官指正。


W3C标准和IE的差异

W3C标准绑定事件的方法
element.addEventListener('click', function() { }, false);
IE绑定事件的方法
var handler = function() { };
element.attachEvent('onclick', handler);
element.detachEvent('onclick', handler);
使用能力探测来适配两者之间的不同:
if (element.addEventListener) {element.addEventListener(type, responder, false);
} else if (element.attachEvent) {element.attachEvent('on' + type, responder);
}
IE事件绑定中存在的两个问题:
1.内存泄露
大部分框架使用缓存记录事件的绑定,并在onunload事件中对绑定的事件进行清理。
2.event和target

event可以通过window.event获取,target可以通过event.srcElement代替。


验证元素

对于传进来的元素,我们首先要确定它是否可以添加事件。根据元素的nodeType属性可以确定节点的类型:
  • 元素 element   1
  • 属性 attr   2
  • 文本 text   3
  • 注释 comments   8
  • 文档 document   9
我们要在元素中过滤掉文本节点和注释节点:
function isValidElement(element) {return element.nodeType !== 3 && element.nodeType !== 8;
}


接口设计

接口设计参考W3C标准:
  • 添加事件:turing.events.add(element, type, callback)
  • 删除事件:turing.events.remove(element, type, callback)
  • 触发事件:turing.events.fire(element, type)
  • 使用event获取事件对象,提供target属性获取目标元素


参考阅读

  •     Document Object Model Events
  •     Node.nodeType
  •     Understanding and Solving Internet Explorer Leak Patterns
  •     srcElement Property
  •     createEventObject Method
  •     QuirksMode on registration models
  •     addEvent() recoding contest
  •     Prototype’s event.js
  •     jquery’s event.js

这篇关于js框架开发之旅--事件二的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1082295

相关文章

Eclipse+ADT与Android Studio开发的区别

下文的EA指Eclipse+ADT,AS就是指Android Studio。 就编写界面布局来说AS可以边开发边预览(所见即所得,以及多个屏幕预览),这个优势比较大。AS运行时占的内存比EA的要小。AS创建项目时要创建gradle项目框架,so,创建项目时AS比较慢。android studio基于gradle构建项目,你无法同时集中管理和维护多个项目的源码,而eclipse ADT可以同时打开

js+css二级导航

效果 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Con

vue+elementui分页输入框回车与页面中@keyup.enter事件冲突解决

解决这个问题的思路只要判断事件源是哪个就好。el分页的回车触发事件是在按下时,抬起并不会再触发。而keyup.enter事件是在抬起时触发。 so,找不到分页的回车事件那就拿keyup.enter事件搞事情。只要判断这个抬起事件的$event中的锚点样式判断不等于分页特有的样式就可以了 @keyup.enter="allKeyup($event)" //页面上的//js中allKeyup(e

Python应用开发——30天学习Streamlit Python包进行APP的构建(9)

st.area_chart 显示区域图。 这是围绕 st.altair_chart 的语法糖。主要区别在于该命令使用数据自身的列和指数来计算图表的 Altair 规格。因此,在许多 "只需绘制此图 "的情况下,该命令更易于使用,但可定制性较差。 如果 st.area_chart 无法正确猜测数据规格,请尝试使用 st.altair_chart 指定所需的图表。 Function signa

WDF驱动开发-WDF总线枚举(一)

支持在总线驱动程序中进行 PnP 和电源管理 某些设备永久插入系统,而其他设备可以在系统运行时插入和拔出电源。 总线驱动 必须识别并报告连接到其总线的设备,并且他们必须发现并报告系统中设备的到达和离开情况。 总线驱动程序标识和报告的设备称为总线的 子设备。 标识和报告子设备的过程称为 总线枚举。 在总线枚举期间,总线驱动程序会为其子 设备创建设备对象 。  总线驱动程序本质上是同时处理总线枚

JavaWeb系列六: 动态WEB开发核心(Servlet) 上

韩老师学生 官网文档为什么会出现Servlet什么是ServletServlet在JavaWeb项目位置Servlet基本使用Servlet开发方式说明快速入门- 手动开发 servlet浏览器请求Servlet UML分析Servlet生命周期GET和POST请求分发处理通过继承HttpServlet开发ServletIDEA配置ServletServlet注意事项和细节 Servlet注

js小题:通过字符串执行同名变量怎么做

在JavaScript中,你不能直接使用一个字符串来直接引用一个变量,因为JavaScript是一种静态类型语言(尽管它的类型在运行时可以变化),变量的名字在编译时就被确定了。但是,有几种方法可以实现类似的功能: 使用对象(或Map)来存储变量: 你可以使用一个对象来存储你的变量,然后使用字符串作为键来访问这些变量。 let myVars = { 'var1': 'Hello', 'var

手把手教你入门vue+springboot开发(五)--docker部署

文章目录 前言一、前端打包二、后端打包三、docker运行总结 前言 前面我们重点介绍了vue+springboot前后端分离开发的过程,本篇我们结合docker容器来研究一下打包部署过程。 一、前端打包 在VSCode的命令行中输入npm run build可以打包前端代码,出现下图提示表示打包完成。 打包成功后会在前端工程目录生成dist目录,如下图所示: 把

通知中心设置一个键盘的捕捉事件

//通知中心监听键盘的frame发生改变

Sapphire开发日志 (十) 关于页面

关于页面 任务介绍 关于页面用户对我组工作量的展示。 实现效果 代码解释 首先封装一个子组件用于展示用户头像和名称。 const UserGrid = ({src,name,size,link,}: {src: any;name: any;size?: any;link?: any;}) => (<Box sx={{ display: "flex", flexDirecti