一般的事件检查代码如下:
乍一看,这些函数为实现他们的目的已经足够优化。影藏的性能问题在于每次函数调用时都执行重复工作。每次都进行同样的检查,看看某种方法是否存在。如果addHandler
以上连就调用addEventListener那么每个后续调用都要出现这句代码。
解决方案一:延迟加载:
这两个方法第一次被调用时,检查一次并决定适用那种方法附加或分离句柄。然后,原始函数就被包含适当操作的新函数覆盖了。最后调用新函数并将原始参数传给他。
调用一个延迟加载函数总是在第一次使用较长时间,因为它必须运行监测然后调用另一个函数已完成任务。但是,后续调用同一函数将快很多,因为不再执行检查逻辑了。
延迟加载适用于函数不会在页面上立即被用到的场合。
解决方案二:预加载
它在脚本加载前进行检查,而不等待函数调用。这样做检查仍然只是一次,但此过程中来的更早。预加载适用于一个函数马上就会用到,而且在整个页面生命周期中经常使用的场合
在这里强调一下2级事件虽然支持事件捕获和事件冒泡,但是addEventListener、removeEventListener中第三个参数为
false表示支持事件冒泡,为true表示支持事件捕获。
同时这里也把Dean Edwards写的addEvent库的代码给出来一共大家参考
分享到:
相关推荐
JavaScript程序设计实验指导书主要针对的是JavaScript初学者,旨在通过实践操作加深对这门语言...每个实验都是一个学习和成长的机会,通过不断地实践和反思,学生能够更好地掌握这门语言,提高编程效率和问题解决能力。
Java语言是美国Sun公司开发的一种跨平台编程语言,以其独特的“一次编译,到处运行”的特性赢得了广泛的认可。本教案旨在帮助学生和教师深入理解Java语言的基本概念、特点以及实际应用。 一、Java语言体系结构与...
6. **网页发布和浏览器兼容性** - 学生需要配置服务器发布网页,并确保在主流浏览器上测试通过,这涉及到了HTTP协议、FTP上传和跨浏览器兼容性问题的解决。 7. **实践能力培养** - 课程设计的目标是让学生将所学...
- **发展历程**:SpringBoot的发展始于对Spring框架复杂配置的反思,旨在通过“约定优于配置”的原则,提供一个快速启动和运行的环境。 - **定义**:SpringBoot是Spring框架的一个模块,旨在简化Spring应用的...
- **实例化对象**:讲解如何从一个类实例化对象的过程。 - **构造器**:说明构造器的作用及其在创建对象时的重要性。 - **方法和消息传递**:探讨Java中方法调用和消息传递的机制。 - **终结器**:解释终结器...
网上书店售书系统是电子商务应用的一个实例,它实现了书籍信息展示、用户注册登录、购物车管理、订单处理等一系列功能。用户可以通过浏览图书信息,选择购买并进行在线支付,后台则负责订单处理、库存管理以及物流...
5. 测试与调试:进行跨浏览器兼容性测试,修复潜在的错误,保证网页在各种环境下稳定运行。 【实习体验与收获】 陈坤云在实习过程中体验了从学生到职场人的转变,面对实际项目和团队协作的挑战。他可能从以下几个...
- **跨浏览器兼容性**:客户端只需支持HTML即可查看ASP页面。 - **安全性**:源代码不会暴露给客户端,保护了程序的核心逻辑。 ##### QA测试 质量保证(Quality Assurance,简称QA)是确保软件产品满足用户需求的...
- **背景介绍:** 介绍了Google是如何成为一个全球性的互联网巨头,并解释了它为何能够引领搜索技术的发展。 - **重要性:** 通过了解Google的成功故事,可以激发读者对于搜索引擎开发的兴趣,并了解到搜索引擎技术...
"javascript-challenge"是一个以JavaScript为主题的项目,旨在帮助开发者提升其在JavaScript编程语言中的技能。这个挑战可能包含一系列练习或小项目,目的是测试和增强你在实际应用中的JavaScript知识。 JavaScript...
- **兼容性测试结果**:分析软件在不同操作系统、浏览器、硬件配置等环境下的表现,确保其跨平台的兼容性。 - **用户界面测试结果**:检查用户界面的易用性、视觉一致性以及与设计规范的符合度。 6. **评价及总结...
- **实践意义**:反思是不断进步的关键,可以帮助我们更好地完成下一个项目。 - **案例分析**:记录下设计过程中遇到的问题及解决方法。 **知识点20:收集反馈** - **定义**:向他人展示作品并征求他们的意见和...
46. **错误预防文化**:创建一个鼓励错误发现和报告的文化,而不是惩罚。 47. **定期审计**:对测试过程进行审计,检查是否符合标准和最佳实践。 48. **测试文档的版本控制**:使用版本控制系统管理测试文档,确保...
"Machinehack: 现场项目"是一个专为数据科学爱好者和从业者设计的实践平台,旨在通过实际操作的项目来提升技能和理解力。在这个项目中,用户将有机会使用Jupyter Notebook这一强大的交互式计算环境,进行数据分析、...