javascript中event汇总
ie firefox chrome opera Safari浏览器中对 event的处理并不一致,在此我将各个浏览器中event的兼容处理做了一个汇总,此处引用的是javascript中的event兼容处理代码。
- var EventUtil = {//在这里我们用一个对象来将对event的各种兼容处理封装起来
- //首先是对绑定事件的兼容
- addHandler: function(element, type, handler){
- if (element.addEventListener){
- //DOM2级处理绑定事件方法
- element.addEventListener(type, handler, false);
- } else if (element.attachEvent){
- //IE绑定方法
- element.attachEvent("on" + type, handler);
- } else {
- //DOM0级处理方法(可选,仅支持DOM0级的浏览器似乎已经不存在了)
- element["on" + type] = handler;
- }
- },
- //鼠标按钮的兼容处理
- getButton: function(event){
- if (document.implementation.hasFeature("MouseEvents", "2.0")){//首先检查是否是DOM标准
- return event.button;
- } else {
- //对IE向DOM兼容
- 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 {//IE8之前和opera 需要使用keyCode获取字符编码
- 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;
- }
- }
- };
此处添加的事件尚不完全,有待扩充。这里引用的是《javascript高级程序设计》中的实例。
javascript中event汇总的更多相关文章
- (转)javascript中event对象详解
原文:http://jiajiale.iteye.com/blog/195906 javascript中event对象详解 博客分类: javaScript JavaScriptCS ...
- js防止回车(enter)键提交表单及javascript中event.keycode
如何防止回车(enter)键提交表单,其实很简单,就一句话.onkeydown="if(event.keyCode==13)return false;"把这句写在from标签里 ...
- javascript 中event是全局变量
The only thing I can think of is that event is in fact window.event and it makes itself available wh ...
- Javascript中event.srcElement和event.target的区别
event.srcElement 可以捕获当前事件作用的对象,如event.srcElement.tagName可以捕获活动标记名称.注意获取的标记都以大写表示,如"TD",&qu ...
- javascript中event.clientX和event.clientY用法的注意事项
今天做项目用到了event.clientX和event.clientY,给元素定位,用定位的时候,让top和left等于事件元素的的坐标 <!DOCTYPE html> <html& ...
- 【好文收藏】javascript中event对象详解
event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等. event对象只在事件发生的过程中才有效. event的某些属性只对特定的事件有意义.比如,fromEleme ...
- javascript中event.keycode大全
keycode 8 = BackSpace BackSpace keycode 9 = Tab Tab keycode 12 = Clear keycode 13 = Enter keycod ...
- 理解JavaScript中的事件处理 阻止冒泡event.stopPropagation();
原文地址:http://www.cnblogs.com/binyong/articles/1750263.html 这篇文章对于了解Javascript的事件处理机制非常好,将它全文转载于此,以备不时 ...
- 在javascript中的浏览器兼容问题以及兼容浏览器汇总(默认事件,阻止冒泡,事件监听。。。)以及解决方式详解
在javascript中常见的浏览器兼容问题,以及解决方式. 在前端工作当中我们遵循这样的原则:渐进增强和优雅降级 渐进增强(progressive enhancement): 针对低版本浏览器进 ...
随机推荐
- VS2012 编译程序时报无法载入PDB文件错误解决方式
VS2012 编译程序时报无法载入PDB文件错误解决方式 "ConsoleApplication1.exe"(Win32): 已载入"C:\Users\hp\Docume ...
- C++习题 商品销售
Description 商店销售某一商品,每天公布统一的折扣(discount).同时允许销售人员在销售时灵活掌握售价(price),在此基础上,一次购10件以上者,还可以享受9.8折优惠.现已知当天 ...
- [LeetCode145]Binary Tree Postorder Traversal
题目: Given a list, rotate the list to the right by k places, where k is non-negative. For example:Giv ...
- JAVA实现DAO基本层CRUD操作
随着shh2各种操作方便框架.越来越多JAVA WEB效率,可是,假设在不了解这些框架使用的场合的情况下,一拿到项目就盲目地选择这些框架进行系统架构的搭建,就有可能造成非常多不是必需的资源浪费. 在项 ...
- zoj 1738 - Lagrange's Four-Square Theorem
称号:四方形定理.输出可以表示为一个数目不超过四个平方和表示的数. 分析:dp,完全背包.背包分割整数.可用一维分数计算,它也可以被写为一个二维团结. 状态:设f(i,j,k)为前i个数字,取j个数字 ...
- Win7设置局域网共享
Win7设置局域网共享 1. 把win7的guest用户开启. 打开win7的控制面板=>用户账号与安全=>用户账户=>管理其他用户=>点击guest用户,进行开启. 2.解决 ...
- spring集成quartz
spring集成quartz 注意:出现异常"Caused by: java.lang.IncompatibleClassChangeError: class org.springframe ...
- linux下磁盘进行分区、文件系统创建、挂载和卸载(转)
任务的原因:由于,刚购买来的服务器需要将磁盘挂载到操作系统上,为了挂载磁盘首先要对磁盘进行分区,然后进行文件系统的创建,最后将磁盘挂载到操作系统上的某个目录. MBR(Master Boot Reco ...
- 第一章 工欲善其事 其利润—Android SDK工具(2)
1.2设备管理工具-调试桥(ADB) 1.2.1ADB简单介绍 ADB全称是Android Debug Bridge,是Android SDK里自带的一个工具,用这个工具能够直接操作管理Android ...
- [MySQL]-->询5
几天之内解决在新年发行一个同事的生日过程
前言: 遇到朋友提问,例如以下:SELECT * FROM ali_users WHERE DATEDIFF(CAST(CONCAT(DATE_FORMAT(NOW(),'%y'),D ...