当前位置: 首页 > 编程日记 > 正文

js高级程序设计之跨浏览器事件处理

//事件

var EventUtil = {
//添加事件
addHandler:function (element, type, handler) { //element:DOM对象,type:事件类型,handler:事件函数
if (element.addEventListener) {
//是否存在DOM2级方法
element.addEventListener(type, handler, false);
} else if (element.attachEvent) {
//IE方法,不过IE中的作用域是全局性的
element.attachEvent("on" + type, handler);
} else {
//DOM0级方法
element["on" + type] = handler;
}
},
//获取DOM event对象或者IE event对象
getEvent:function (event) {
return event ? event : window.event;
},
//获取执行事件对象
getTarget:function (event) {
return event.target || event.srcElement;
},
//阻止事件默认行为
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;
}
},
//阻止事件冒泡
stopPropagation:function (event) {
if (event.stopPropagation) {
event.stopPropagation();
} else {
event.cancelBubble = true;
}
},
//mouseout,mouseover相关元素
getRelatedTarget:function (event) {
if (event.relatedTarget) {
//DOM的event对象的relatedTarget
return event.relatedTarget;
} else if (event.toElement) {
//IE mouseout事件触发时,toElement代表相关元素
return event.toElement;
} else if (event.fromElement) {
//IE mouseover事件触发时,fromElement代表相关元素
return event.fromElement;
} else {
return null;
}
},
//鼠标按钮
getButton:function (event) {
//因为DOM版与iE版同名,需通过hasFeature()方法检测
if (document.implementation.hasFeature("MouseEvents", "2.0")) {
return event.button;
} else {
//IE event.button
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") {
//非IE在keypress事件时charCode代表那个键的ASCII值
//在不支持此属性的浏览器中,值为undefined
return event.charCode;
} else {
// for IE
return event.keyCode;
}
},
//获取鼠标滚轮数值判断方向
//向上滚动数值为正,是120的倍数
//向下滚动数值为负
getWheelDelta:function (event) {
if (event.wheelDelta) {
//IE,opera 9.5以后,chrome,safari支持事件类型mousewheel
return (client.engine.opera && client.engine.opera < 9.5 ? -event.wheelDelta : event.wheelDelta);
} else {
//Firefox支持事件类型DOMMouseScroll
return -event.detail * 40;
}
},
//获取剪贴板数据
/** etc:
* EventUtil.addHandler(textbox,"paste",function(event){
* event.EventUtil.getEvent(event);
* var text=EventUtil.getClipboardText(event);
* if(!/^\d*$/.test(text)){
* EventUtil.preventDefault(event);
* });
* 只有数值才会被粘贴到文本框
*/
getClipboardText:function (event) {
var clipboardData = (event.clipboardData || window.clipboardData); //for Safari,Chrome or IE
return clipboardData.getData("text");
},

//设置剪贴板数据
/**
* etc:
* EventUtil.addHandler(textbox,"copy",function(event){
* event.EventUtil.getEvent(event);
* EventUtil.preventDefault(event);
* EventUtil.setClipboardText(event,"Hello world");
* });
* @param event
* @param value
* @return {*}
* 不会将文本框中的文本复制到剪贴板
*/
setClipboardText:function (event, value) {
if (event.clipboardData) {
//for Chrome.Safari
return event.clipboardData.setData("text/plain", value);
} else {
//for IE
return window.clipboardData.setData("text", value);
}
}
};

转载于:https://www.cnblogs.com/webFrontDev/archive/2012/11/04/2753483.html

相关文章:

在python中使用关键字define定义函数_python自定义函数def的应用详解

这里是三岁&#xff0c;来和大家唠唠自定义函数&#xff0c;这一个神奇的东西&#xff0c;带大家白话玩转自定义函数 自定义函数&#xff0c;编程里面的精髓&#xff01; def 自定义函数的必要函数&#xff1a;def 使用方法&#xff1a;def 函数名(参数1&#xff0c;参数2&…

在Win7 + VMware7下安装Xcode 4

我的Mac OS X是在Win7下虚拟机上安装的&#xff0c;我先把xcode_4.0.2_and_ios_sdk_4.3.dmg下载到Win7下某个目录下&#xff0c;然后共享该目录&#xff0c;然后启动Mac OS X&#xff0c;开始安装&#xff1a;1. 找到Win7下xcode_4.0.2_and_ios_sdk_4.3.dmg所在的共享文件夹&am…

plsql误删除数据,提交事务后如何找回?

select *from tbs_rep_template as of timestamp to_timestamp(2018-07-12 14:23:00, yyyy-mm-dd hh24:mi:ss)where tplname like %工业管道定期检验报告%;--其中2018-07-12 14:23:00为:误删数据的大致时刻的提前时间转载于:https://www.cnblogs.com/demon09/p/9300756.html

配置flutter For IOS

https://www.cnblogs.com/lovestarfish/p/10628205.html第一步&#xff0c;下载flutter最新版&#xff0c;解压到自己的目录里&#xff1a; 提供网址&#xff1a;https://flutter.io/setup-macos/ 第二步&#xff0c;终端配置环境&#xff0c;这里我配知道了IOS&#xff0c;安…

Unity3D 镜面反射

原创文章如需转载请注明&#xff1a;转载自 脱莫柔Unity3D学习之旅 QQ群&#xff1a;【119706192】 本文链接地址: Unity3D 镜面反射 这是官方CharacterCustomization事例中的镜面反射shader。 1.首先需要一个plane当镜子&#xff0c;将代码MirrorReflection.cs文件绑定到镜子…

python后端学什么框架_献给正在学习python的你, 10个最受欢迎的Python开源框架

很多小伙伴在学习wen的时候说&#xff0c;有没有几个常用的框架&#xff0c;好多小伙伴都只说对了其中几个&#xff0c;只有少部分是说正确的&#xff0c;想要了解更多&#xff0c;欢迎大家订阅微信公众号&#xff1a;Python从程序猿到程序员&#xff0c;或者加4913.08659&…

HubbleDotNet 简介 (转)

系统简介 HubbleDotNet 是一个基于.net framework 的开源免费的全文搜索数据库组件。开源协议是 Apache 2.0。HubbleDotNet提供了基于SQL的全文检索接口&#xff0c;使用者只需会操作SQL&#xff0c;就可以很快学会使用HubbleDotNet进行全文检索。 HubbleDotNet可以实现全文索引…

JavaScript夯实基础系列(四):原型

在JavaScript中有六种数据类型&#xff1a;number、string、boolean、null、undefined以及对象&#xff0c;ES6加入了一种新的数据类型symbol。其中对象称为引用类型&#xff0c;其他数据类型称为基础类型。在面向对象编程的语言中&#xff0c;对象一般是由类实例化出来的&…

python中意外缩进是什么意思_Python 的缩进是不是反人类的设计?

前些天&#xff0c;我写了《Python为什么使用缩进来划分代码块&#xff1f;》&#xff0c;文中详细梳理了 Python 采用缩进语法的 8 大原因。我极其喜欢这种简洁优雅的风格&#xff0c;所以对它赞美有加。 然而文章发出去后&#xff0c;非常意外&#xff0c;竟收到了大量的反对…

netstat命令

使用netstat -nap可以查看当前发送和接收队列&#xff0c;Send-Q 很高时表示发送队列太长&#xff0c;可能网络阻塞 转载于:https://www.cnblogs.com/wx170119/p/11606909.html

mysql操作数字名称的schema时字符的逃逸问题

一个简单的问题折腾了好大一会儿&#xff0c;mysql不支持直接操作数字名称的schema&#xff0c;在sql操作时必须做字符逃逸&#xff0c;如&#xff1a; char sql_str[1000]; memset(sql_str, 0x0, 1000); sprintf(sql_str, "CREATE TABLE IF NOT EXIST %s.%s(data_id INT(…

使用XMLSpyDocEditPlugIn2.dll,页面加载失败

维护项目中遇到问题&#xff0c;项目用到XMLSpyDocEditPlugIn2.dll的acticex控件&#xff0c;客户换了其他pc后&#xff0c;不能下载安装acticex控件&#xff0c;所以不能使用此功能。解决方法&#xff1a; 1 下载 XMLSpyDocEditPlugIn2.dll&#xff0c; 路径 http://download.…

[bzoj4562][Haoi2016]食物链_记忆化搜索_动态规划

食物链 bzoj-4562 Haoi-2016 题目大意&#xff1a;给你n个点&#xff0c;m条边的DAG&#xff0c;求所有的满足条件的链&#xff0c;使得每条链的起点是一个入度为0的点&#xff0c;中点是一条出度为0的点。 注释&#xff1a;$1\le n\le 10^5$&#xff0c;$1\le m\le 2*10^5$。 …

Apache源码包在LINUX(CENTOS6.8)中的安装(出现问题及解决)

任务&#xff1a;在CENT6.8系统中安装Apache&#xff08;版本为&#xff1a;httpd-2.4.41&#xff09; 前提&#xff1a;由于源码包必须先编译后安装&#xff0c;所以必须先安装编译器&#xff1a;gcc 理论步骤&#xff1a; 1.检测gcc软件包&#xff0c;如果不存在则进行安装。…

append函数_连载|想用Python做自动化测试?函数的参数传递机制及变量作用域

“ 这一节有点难。看不懂没关系。继续往后学&#xff0c;回头再来看。”10.6 函数参数传递的机制10.6.1 值传递与引用传递编程语言的参数传递机制通常有两种&#xff1a;值传递拷贝参数的值&#xff0c;然后传递给函数里的新变量。这样&#xff0c;原变量和新变量之间互相独立&…

PowerDesigner生成数据库

此文中图片不小心被删除了&#xff0c;特重写了PowerDesigner生成数据库修改 一、 用POWERDESIGNER生成数据库 FILE&#xff0d;》NEW 在MODEL NAME中输入模版名 在DBMS中选择要连接的数据库类型 点击确定 确定后出现如下页面 选中工具条面版上的 表按钮 在…

随想_8_Windows_XP_Explorer_错误

最近发现微软的系统的稳定性&#xff0c;还是有待提高啊&#xff0c;这不XP SP3的资源管理器&#xff0c;就犯毛病了&#xff0c;俗话说有图 有真相&#xff0c;各位请看&#xff1a; 大家看&#xff0c;资源管理器左边的导航栏&#xff0c; 就可以发现&#xff0c;里面很多东西…

webpack笔记(6)调试模式

在配置devtool时&#xff0c;webpack给我们提供了四种选项。 source-map:在一个单独文件中产生一个完整且功能完全的文件。这个文件具有最好的source map,但是它会减慢打包速度&#xff1b;cheap-module-source-map:在一个单独的文件中产生一个不带列映射的map&#xff0c;不带…

nicstat命令安装与分析

nicstat安装包下载与安装&#xff1a; wget https://downloads.sourceforge.net/project/nicstat/nicstat-1.95.tar.gz tar -zxvf nicstat-1.95.tar.gz cd nicstat-1.95 cp Makefile.Linux Makefile vi Makefile 后修改 CFLAGS $(COPT) make && make install //…

component是什么接口_【Android每日一题】从Activity创建到View呈现中间发生了什么?...

前言前段时间公司招人&#xff0c;作为面试官&#xff0c;我经常让面试者简述View的绘制流程。他们基本都能讲明白View的测量(measure)、布局(layout)、绘制(draw)等过程。还有少数人会提到DecorView和ViewRootImp的作用。但是&#xff0c;当我继续追问关于Window的内容时&…

wp 删除独立存储空间文件(多级非空文件夹删除)

void DelFile(string unZipFilePath)//unZipFilePath第一次传递的是根目录名 { using (var store IsolatedStorageFile.GetUserStoreForApplication()) { if (store.DirectoryExists(unZipFilePath)) { …

重拾博客小序与杂思

寒假期间&#xff0c;条件所限&#xff0c;不能上网&#xff0c;也不能更新博客。寒假结束&#xff0c;懈怠了两个星期&#xff0c;打算重拾博客&#xff0c;继续更新。这学期&#xff08;2012年2月到2012年8月&#xff09;在专业学习上将突出几个集中研究的领域&#xff0c;在…

Ubuntu iso镜像文件写入U盘

Ubuntu iso镜像文件写入U盘 Ubuntu iso镜像文件写入U盘方法 分步指南 命令行输入 usb-creator-gtk如下&#xff1a;3、Device 选择插入的U盘 4、image 选择镜像文件 5、make startup disk

页面布局让footer居页面底部_网站各页面该如何布局关键词优化提升排名?

在网站优化中&#xff0c;最值得关注的一个事情就是关键词的布局&#xff0c;因为关键词的布局直接影响着网站的排名。那么怎样布局关键词才能提高页面和关键词的相关性&#xff0c;并提高网站排名呢&#xff1f;下面一起来看看。一、利用HTML标签布局关键词众所周知&#xff0…

Linux中如何配置IP

与网络相关的文件&#xff1a;1) /etc/sysconfig/network 设置主机名称及能否启动Network2) /etc/sysconfig/network-scripts/ifcfg-eth0设置网卡参数的文件3) /etc/modprobe.conf 开机时用来设置加载内核模块的文件4) /etc/resolv.conf 设置DNS IP&#xff08;解析服务器&…

《DSP using MATLAB》Problem 5.7

代码&#xff1a; %% %% Output Info about this m-file fprintf(\n***********************************************************\n); fprintf( <DSP using MATLAB> Problem 5.7 \n\n);banner(); %% % -------------------------------------------…

一般将来时语法课教案_「英语语法」一般过去时用法技巧全解

大家好&#xff0c;我是教课蚪英语的张老师&#xff0c;今天我们来学习英语语法100讲的第一课&#xff0c;一般过去时&#xff01;一、首先我们了解一下什么是一般过去时&#xff1f;英语语法1. 概念&#xff1a;描述过去的状态或过去的动作。 在英语中&#xff0c;非现在的以前…

修改Ubuntu的启动logo

修改Ubuntu的启动logo 原文链接: https://my.oschina.net/jmjoy/blog/380262 内容: Plymouth splash screen is the initial splash screen at boot-up.Ubuntu 10.04 uses Plymouth instead of xsplash to manage the fancy boot graphics.If you want something different,y…

每周四十小时,你有多少是在为自己干活?

努力工作为什么&#xff1f;普通人不外乎希望加薪、升职&#xff0c;过的更好。 但是&#xff0c;要想达到这个目标&#xff0c;靠什么&#xff1f; 普通人当然要靠提升自己的能力和经验。 可是&#xff0c;你是不是已经发现&#xff0c;工作最踏实的&#xff0c;却未必取得最好…

在Linux下查看共享文件夹

一般情况&#xff0c;我们用到smbclient&#xff0c;常用方法所如下&#xff1a;#smbclient -L //IP地址或计算机名smbclient是samba的Linux客户端&#xff0c;在Linux机器上用来查看服务器上的共享资源&#xff0c;也可以向ftp一样&#xff0c;用户可以等里samba服务器&#x…