JS跨浏览器事件工具之:EventUtil完整源码

定制一款国密浏览器(1):Chromium 源码获取和构建 基于chromium定制国密浏览器第一步,获取chromium源码和构建 deb 包。 阅读详情

提供之前的文章中所提到的EventUtil对象的完整源码:

var EventUtil = {

    addHandler: function(element, type, handler){
        if (element.addEventListener){
            element.addEventListener(type, handler, false);
        } else if (element.attachEvent){
            element.attachEvent("on" + type, handler);
        } else {
            element["on" + type] = handler;
        }
    },
    
    getButton: function(event){
        if (document.implementation.hasFeature("MouseEvents", "2.0")){
            return event.button;
        } else {
            switch(event.button){
                case 0:
                case 1:
                case 3:
                case 5:
                case 7:
                    return 0;
                case 2:
                case 6:
                    return 2;
                case 4: return 1;
            }
        }
    },
    
    getCharCode: function(event){
        if (typeof event.charCode == "number"){
            return event.charCode;
        } else {
            return event.keyCode;
        }
    },
    
    getClipboardText: function(event){
        var clipboardData =  (event.clipboardData || window.clipboardData);
        return clipboardData.getData("text");
    },
    
    getEvent: function(event){
        return event ? event : window.event;
    },
    
    getRelatedTarget: function(event){
        if (event.relatedTarget){
            return event.relatedTarget;
        } else if (event.toElement){
            return event.toElement;
        } else if (event.fromElement){
            return event.fromElement;
        } else {
            return null;
        }
    
    },
    
    getTarget: function(event){
        return event.target || event.srcElement;
    },
    
    getWheelDelta: function(event){
        if (event.wheelDelta){
            return (client.engine.opera && client.engine.opera < 9.5 ? -event.wheelDelta : event.wheelDelta);
        } else {
            return -event.detail * 40;
        }
    },
    
    preventDefault: function(event){
        if (event.preventDefault){
            event.preventDefault();
        } else {
            event.returnValue = false;
        }
    },

    removeHandler: function(element, type, handler){
        if (element.removeEventListener){
            element.removeEventListener(type, handler, false);
        } else if (element.detachEvent){
            element.detachEvent("on" + type, handler);
        } else {
            element["on" + type] = null;
        }
    },
    
    setClipboardText: function(event, value){
        if (event.clipboardData){
            event.clipboardData.setData("text/plain", value);
        } else if (window.clipboardData){
            window.clipboardData.setData("text", value);
        }
    },
    
    stopPropagation: function(event){
        if (event.stopPropagation){
            event.stopPropagation();
        } else {
            event.cancelBubble = true;
        }
    }

};

浏览器开发源码深入分析:cjylx_browser2_code项目 本文还有配套的精品资源,点击获取 简介:【cjylx_browser2_code】项目提供了关于浏览器开发的源码分享,主要包含浏览器的核心组件架构、HTML解析渲染流程、JavaScript执行机制、网络通信技术、安全性策略、Web API应用、性能优化技巧、用户界面设计、多进程架构和扩展插件支持等关键知识点。该源码可能是开源的,适合开发者学习和研究,涵盖浏览器开发的多个方... 阅读详情

相关推荐

Java浏览器源码剖析与实战应用

Java浏览器源代码是理解Java网络浏览器构建和功能实现的核心。通过深入分析源代码,开发者能够掌握浏览器运行的逻辑,包括页面加载、脚本执行、用户交互处理等关键步骤。对于想要进一步开发或优化浏览器性能的IT专业人士来说,对源代码的充分理解是必不可少的。JavaFX是一种用于构建富客户端应用程序的软件平台,它提供了一套丰富的界面组件,旨在替代Java的Swing图形用户界面工具包。JavaFX带来了更加现代和交互式的用户界面体验,它支持多种丰富的媒体类型,如视频、音频、图形和动画效果。

weixin_30765637的博客 936

JavaScript跨浏览器事件对象EventUtil(IE中event对象和方法DOM中都有,此处提供两者映射方法)

虽然DOM和IE中的event对象不同,但基于它们之间的相似性依旧可以拿出跨浏览器方案来。var EventUtil = { addHandler:function(element,type,handler){ //省略部分代码 }, getEvent:function(event){ return event?event:window.event;

Dove_Knowledge的博客 1079

Label Studio保姆级教程:从零搭建医疗影像标注平台(DICOM格式支持)

本文提供基于Label Studio从零搭建医疗影像标注平台的保姆级教程。针对DICOM格式支持,详细阐述了环境部署、DICOM深度集成与预处理、团队协作权限管理以及质量审核闭环等核心环节,旨在构建一个高效、可落地的医疗AI数据标注解决方案,助力模型落地。

nft7creator的博客 304

跨浏览器的事件对象-EventUtil对象的使用

为了解决跨浏览器的事件处理程序,需要编写一个方法,习惯上,这个方法属于一个名为EventUtil的对象,编写并使用该对象后,可保证处理事件的代码能在大多数浏览器下一致的运行。 var EventUtil = { // 添加事件,保证对浏览器的兼容性。 addHandler: function(element, type, handler) { if (element.addEventLis...

ThisEqualThis的博客 318

RK3588-NANOPC-T6移植ubuntu+xenomai内核

更具网址下载相应的内核。导入到开发板并执行内核。

qq_42007446的博客 573

【AI Infra】Perfetto性能分析工具指南

Perfetto是一款开源性能分析工具,提供系统级和应用级的活动数据追踪功能。其界面分为四个区域:左侧操作区(包含Trace查看、SQL查询、预置分析等功能)、上方信息区、中间图形化展示区以及下方详细信息区。工具支持快捷键操作(w/s缩放、a/d移动、m标记等),并能高效处理大体积Trace文件。通过Timeline分析可发现性能瓶颈,如案例中update_actor耗时过高的问题,最终定位到CPU offloading导致的MemcpyH2D操作耗时过长,提出了优化方案。Perfetto相比Systrac

baiweizeng的博客 1509

跨浏览器的事件对象-------EventUtil 中的方法总结

什么是EventUti----封装好的事件对象 点击事件先后顺序=&gt;&gt;&gt;mousedown&gt;mouseup&gt;click 在JavaScript中,DOM0级、DOM2级与旧版本IE(8-)为对象添加事件的方法不同 为了以跨浏览器的方式处理事件,需要编写一段“通用代码”,即跨浏览器的事件处理程序 习惯上,这个方法属于一个名为EventUtil的对象 编写并...

ynd_sg的博客 380

TSMaster MBD模块实战:如何用Simulink模型快速搭建汽车电子测试环境

本文实战演示了如何利用TSMaster的MBD模块,将Simulink模型快速部署为汽车电子自动化测试环境的核心。通过建立模型与TSMaster系统变量的实时数据通道,并利用数据仓库统一数据定义,工程师能无缝连接算法仿真与真实总线网络,显著提升从模型到HIL测试的验证效率。

php55的博客 207

浏览器页面源代码

这里只显示引入的文件。

qq_46063760的博客 638

SAP S4业务伙伴(BP)实战指南:从角色分配到数据同步的完整流程

本文详细解析了SAP S4业务伙伴(BP)功能,从基础概念到实战操作,涵盖角色分配、数据同步及常见问题排查。通过BP机制,企业可高效管理客户、供应商等多重身份,实现数据共享和动态切换,显著提升主数据管理效率。特别适合SAP实施顾问和ERP管理员参考。

y2z3a4b5c的博客 870

ADS SerDes仿真实战:深入解析Tx_Diff均衡器(EQ)参数对眼图质量的影响

本文以ADS仿真平台为基础,深入解析了SerDes设计中Tx_Diff均衡器(EQ)参数对信号完整性的核心影响。通过实战演示,详细对比了去加重(De-emphasis)与FIR抽头系数两种调节模式,揭示了它们如何有效对抗信道损耗与码间干扰,从而显著改善眼图的高度、宽度与抖动性能,为高速串行链路设计提供关键调优思路。

weixin_29230901的博客 226

2023 多功能浏览器IAPP源码

多功能浏览器IAPP源码,最早看到这个浏览器是两年前,更新没间断过,作者有技术但不多,我俩星期写的就赶超这玩意了,虽然作者不行,但现在iapp开发者普遍都不行,甚至还不如这个浏览器写的好。360加固原因,文件中小部分代码可能被替换(如部分s,f被替换成dims),需要自行修复,并不能直接使用。防追踪,资源嗅探,加载js脚本,去广告,个性化设置以及浏览器必备的功能。由于apk经过360加固,而且是原生编译打包,逆向属实不易。该浏览器开源过一个极其旧的版本,本次分享的是最新版。

784

【HCIA学习记录】WLAN配置实验

HCIA-WLAN

寸先生的AI道路 3874

php网页事件处理方法,跨浏览器的事件处理程序

原生js,跨浏览器兼容是件很蛋疼的事情!跨浏览器的事件处理程序,源码:点我,解绑事件!var btn=document.getElementById("touch");var btn2=document.getElementById("test");function handler(){alert("响应点击事件!");}//直接拷段下面这段代码var EventUtil={addHandler:...

weixin_42486337的博客 114

YOLOv8的二次创新 | 结合iRMB与EMA打造全新的iEMA机制,提升动态检测性能【附保姆级代码】

YOLOv8继承了YOLO系列的轻量化和高效检测特性,同时通过改进的架构设计使得其在实时场景下具有更高的检测精度。然而,随着检测需求的增加,尤其是在动态目标检测和长时间序列检测中,YOLOv8的鲁棒性依然可以提升。通过iEMA机制的引入,我们将在这些方面进行进一步优化。iRMB模块是我们对传统Residual Block的进一步改进。通过多层特征提取,iRMB能够捕捉更多层次的特征信息,并通过引入轻量化的残差结构,提升计算效率。

一键难忘的博客 3085

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

跨浏览器事件对象和事件方法的解决方案

由于,存在IE这种奇葩的浏览器存在,导致DOM中的许多的方法,和别的浏览器不一样。所以跨浏览器是很有必要的。下面给出事件对象和事件方法的解决方案,源码来自《javascript高级程序设计》一书。 //跨浏览器事件方法. var EventUtil={ addHandler:function(element,type,handler){ if(element.addEventListene

blue7wings的专栏 415

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Qt C++ QListWidgetItem进阶:数据角色、自定义样式与性能优化实战

在Qt GUI开发中,列表控件是构建交互界面的基础组件,其核心在于数据与视图的分离管理。Qt的模型/视图架构通过数据角色机制,为列表项提供了灵活的数据存储与外观定制能力。理解Qt::ItemDataRole枚举,掌握setData()与data()方法,是高效管理复杂项数据、实现动态样式和增强交互的关键技术。这不仅能提升界面表现力,如实现多行文本、图标、背景色和复选框,更能通过自定义角色存储业务数据(如用户ID、文件路径),为工程实践中的数据绑定与状态管理提供支持。本文以QListWidgetItem为核心

weixin_34332905的博客 452

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

原来有那么多开源的Web浏览器

提到 Web 浏览器,耳熟能详的当数四小龙:Chrome / Firefox / Safari / 微软 Edge ,这四家浏览器占据了大部分市场份额,同时也在制定 Web 的标准。但除了这些耳熟能详的参赛选手,本期集锦中还有很多小众的开源浏览器可供大家使用~

2301_76369560的博客 2014

[渗透]前端源码Chrome浏览器修改并运行

好久之前,就已经看到,无论什么样的加密,都是脱了裤子放屁。但是话糙理不糙。 之前只是相信,现在又被验证了。 当渗透人员跟我说这个问题后,我自己又尝试了几次,这才发现,自己辛苦增加的安全措施反而毫无作用。。。 因为修改的部分是在请求之前进行的,相当于使用开发环境。。。 接下来就还原这个流程。

让人人都会写程序 988

2023 5IUX主页极简浏览器主页搜索源码

在使用各种导航首页时,我们时常被满屏的广告和资讯所困扰,这款源码可以让你自己设计一个不受干扰的浏览器主页。通过使用5IUX搜索极简搜索主页源码,你可以轻松定制一个属于自己的浏览器主页,享受简洁、无广告的搜索体验。1.极简界面,无广告:该搜索主页拥有简洁的界面,没有任何广告的干扰,让你专注于自己的搜索体验。3.支持自定义搜索引擎:你可以根据自己的喜好添加、删除或修改搜索引擎,让你的搜索更加个性化。2.简单的前端界面:源码提供了一个简单但实用的前端界面,让你能够轻松地进行自定义设计。

719

基于python的简单浏览器的制作

基于python的简单浏览器制作已经打包成代码项目,可.exe打开

qq_64470623的博客 2843

eventutil 跨浏览器事件对象

参考js高级程序设计(三)var EventUtil={ addHandler:function(element,type,handler){ //添加事件 if(element.addEventListener){ element.addEventListener(type,handler,false); //使用DOM2级方法添加事件 }else

qq_34117170的博客 363

浏览器查看当前网页的源码:view-source

view-source是一种协议,查看源码 在浏览器地址栏中输入 view-source:sURL 就可以查看当前网页的源码 JS用法 : window.location=“view-source:” + window.location

Jerry 1万+

python3GUI--浏览器By:PyQt5

本次使用PyQt5制作了一款浏览器,基本实现了一般浏览器的功能,不过还是存在一些不足,例如:1.所有网页跳转均在主窗口中进行,不支持多页显示和操作2.不支持视频播放3.设置里面的部分内容没有实现,比如:语言切换在此,提出我的解决问题方案:1.PyQt5中使用QTabwidget标签页,网页跳转时,创建新的标签页。python PyQt QtWebEngine实现本窗口跳转+ 新窗口跳转2.重新编译QtWebEngine。解决QtWebEngine无法播放H5中的mp4。

懷淰メ的博客 6729

超漂亮的纯JAVA浏览器(附源码)

因为公司某产品是客户端内嵌javaee应用,新版又想用java替代原c++客户端方案。 所以花了一个星期的时间调研了java内嵌式开源浏览器。 归结如下: MozSwing 独立运行,不依赖客户机器的浏览器版本。(目前来看最适合我们,内核是火狐的xulrunner1.9.1),官方已二年没有升级版本了。下载地址:http://sourceforge.net/projects/mozswing...

445822357 1878

上千万行,十几G源码,浏览器为什么这么“变态”?

https://www.zhihu.com/question/290767285/answer/1200063036作者:龙泉寺扫地僧(首席浏览器架构吹牛师,全球最小chromium内核--miniblink作者),已获转载授权我们来看开源的chromium,这货确实相当相当的复杂。源码拉下来就有十多G。我们不禁好奇,chromium到底有哪些玩意,为啥平时感觉只是显示个...

码农翻身 2412
上一篇: Spring学习-17:AOP底层原理
下一篇: JavaScript函数绑定Demo以及函数Currying柯里化
Yes_JiangShuai
博客等级 码龄10年 149粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值