`
yiheng
  • 浏览: 156725 次
社区版块
存档分类

一个跨浏览器事件检查的反思

 
阅读更多

一般的事件检查代码如下:


乍一看,这些函数为实现他们的目的已经足够优化。影藏的性能问题在于每次函数调用时都执行重复工作。每次都进行同样的检查,看看某种方法是否存在。如果addHandler

以上连就调用addEventListener那么每个后续调用都要出现这句代码。

解决方案一:延迟加载:


这两个方法第一次被调用时,检查一次并决定适用那种方法附加或分离句柄。然后,原始函数就被包含适当操作的新函数覆盖了。最后调用新函数并将原始参数传给他。

调用一个延迟加载函数总是在第一次使用较长时间,因为它必须运行监测然后调用另一个函数已完成任务。但是,后续调用同一函数将快很多,因为不再执行检查逻辑了。

延迟加载适用于函数不会在页面上立即被用到的场合。

解决方案二:预加载


它在脚本加载前进行检查,而不等待函数调用。这样做检查仍然只是一次,但此过程中来的更早。预加载适用于一个函数马上就会用到,而且在整个页面生命周期中经常使用的场合

在这里强调一下2级事件虽然支持事件捕获和事件冒泡,但是addEventListener、removeEventListener中第三个参数为false表示支持事件冒泡,为true表示支持事件捕获

同时这里也把Dean Edwards写的addEvent库的代码给出来一共大家参考




分享到:
评论

相关推荐

    原版Javascript程序设计实验指导书.doc

    JavaScript程序设计实验指导书主要针对的是JavaScript初学者,旨在通过实践操作加深对这门语言...每个实验都是一个学习和成长的机会,通过不断地实践和反思,学生能够更好地掌握这门语言,提高编程效率和问题解决能力。

    java语言程序设计教案

    Java语言是美国Sun公司开发的一种跨平台编程语言,以其独特的“一次编译,到处运行”的特性赢得了广泛的认可。本教案旨在帮助学生和教师深入理解Java语言的基本概念、特点以及实际应用。 一、Java语言体系结构与...

    web课程设计汇本报告.doc

    6. **网页发布和浏览器兼容性** - 学生需要配置服务器发布网页,并确保在主流浏览器上测试通过,这涉及到了HTTP协议、FTP上传和跨浏览器兼容性问题的解决。 7. **实践能力培养** - 课程设计的目标是让学生将所学...

    基于SpringBoot的中小型超市数据分析系统设计与实现计算机专业.docx

    - **发展历程**:SpringBoot的发展始于对Spring框架复杂配置的反思,旨在通过“约定优于配置”的原则,提供一个快速启动和运行的环境。 - **定义**:SpringBoot是Spring框架的一个模块,旨在简化Spring应用的...

    JAVA白皮书(英文版)

    - **实例化对象**:讲解如何从一个类实例化对象的过程。 - **构造器**:说明构造器的作用及其在创建对象时的重要性。 - **方法和消息传递**:探讨Java中方法调用和消息传递的机制。 - **终结器**:解释终结器...

    基于asp的网上书店售书系统毕业设计与实现(源代码+项目报告).zip

    网上书店售书系统是电子商务应用的一个实例,它实现了书籍信息展示、用户注册登录、购物车管理、订单处理等一系列功能。用户可以通过浏览图书信息,选择购买并进行在线支付,后台则负责订单处理、库存管理以及物流...

    实习报告模板

    5. 测试与调试:进行跨浏览器兼容性测试,修复潜在的错误,保证网页在各种环境下稳定运行。 【实习体验与收获】 陈坤云在实习过程中体验了从学生到职场人的转变,面对实际项目和团队协作的挑战。他可能从以下几个...

    ASP开发和QA测试实习报告总结

    - **跨浏览器兼容性**:客户端只需支持HTML即可查看ASP页面。 - **安全性**:源代码不会暴露给客户端,保护了程序的核心逻辑。 ##### QA测试 质量保证(Quality Assurance,简称QA)是确保软件产品满足用户需求的...

    自己动手写网络爬虫(基本全)

    - **背景介绍:** 介绍了Google是如何成为一个全球性的互联网巨头,并解释了它为何能够引领搜索技术的发展。 - **重要性:** 通过了解Google的成功故事,可以激发读者对于搜索引擎开发的兴趣,并了解到搜索引擎技术...

    javascript-challenge

    "javascript-challenge"是一个以JavaScript为主题的项目,旨在帮助开发者提升其在JavaScript编程语言中的技能。这个挑战可能包含一系列练习或小项目,目的是测试和增强你在实际应用中的JavaScript知识。 JavaScript...

    软件项目开发测试分析报告.pdf

    - **兼容性测试结果**:分析软件在不同操作系统、浏览器、硬件配置等环境下的表现,确保其跨平台的兼容性。 - **用户界面测试结果**:检查用户界面的易用性、视觉一致性以及与设计规范的符合度。 6. **评价及总结...

    web期末作业设计网页.pdf

    - **实践意义**:反思是不断进步的关键,可以帮助我们更好地完成下一个项目。 - **案例分析**:记录下设计过程中遇到的问题及解决方法。 **知识点20:收集反馈** - **定义**:向他人展示作品并征求他们的意见和...

    有效软件测试——提高测试水平的50条建议(中英文版本)

    46. **错误预防文化**:创建一个鼓励错误发现和报告的文化,而不是惩罚。 47. **定期审计**:对测试过程进行审计,检查是否符合标准和最佳实践。 48. **测试文档的版本控制**:使用版本控制系统管理测试文档,确保...

    Machinehack:现场项目

    "Machinehack: 现场项目"是一个专为数据科学爱好者和从业者设计的实践平台,旨在通过实际操作的项目来提升技能和理解力。在这个项目中,用户将有机会使用Jupyter Notebook这一强大的交互式计算环境,进行数据分析、...

Global site tag (gtag.js) - Google Analytics