js 的一些兼容性写法
①添加事件方法
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级方法
element[
"on"
+ type] = handler;
}
}
②移除之前添加的事件方法
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
;
}
}
③获取事件及事件对象目标
//获取事件对象的兼容性写法
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
;
}
}
⑤阻止事件冒泡的兼容性写法
stopPropagation:
function
(event){
if
(event.stopPropagation){
event.stopPropagation();
}
else
{
event.cancelBubble =
true
;
}
}
⑥mouseover和mouseout 事件才包含的获取相关元素的方法
//mouseover和mouseout 事件才包含的获取相关元素的方法
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
;
}
}
⑦鼠标滚轮判断
/*对于mousedown 和mouseup 事件来说,则在其event 对象存在一个button 属性,
表示按下或释放的按钮。DOM的button 属性可能有如下3 个值:0 表示主鼠标按钮,1 表示中间的鼠
标按钮(鼠标滚轮按钮),2 表示次鼠标按钮。在常规的设置中,主鼠标按钮就是鼠标左键,而次鼠标
按钮就是鼠标右键。
IE8 及之前版本也提供了button 属性,但这个属性的值与DOM 的button 属性有很大差异。
0:表示没有按下按钮。
1:表示按下了主鼠标按钮。
2:表示按下了次鼠标按钮。
3:表示同时按下了主、次鼠标按钮。
4:表示按下了中间的鼠标按钮。
5:表示同时按下了主鼠标按钮和中间的鼠标按钮。
6:表示同时按下了次鼠标按钮和中间的鼠标按钮。
7:表示同时按下了三个鼠标按钮。*/
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;
}
}
}
⑧能够取得鼠标滚轮增量值(delta)的方法
getWheelDelta:
function
(event){
if
(event.wheelDelta){
return
(client.engine.opera && client.engine.opera < 9.5 ?
-event.wheelDelta : event.wheelDelta);
}
else
{
return
-event.detail * 40;
//firefox中的值为+3表示向上滚,-3表示向下滚
}
}
⑨跨浏览器的方式取得字符编码
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"
);
}
⑪.设置剪贴板中的数据
setClipboardText:
function
(event, value){
if
(event.clipboardData){
return
event.clipboardData.setData(
"text/plain"
, value);
}
else
if
(window.clipboardData){
return
window.clipboardData.setData(
"text"
, value);
}
}
js 的一些兼容性写法的更多相关文章
- 常用原生JS方法总结(兼容性写法)
经常会用到原生JS来写前端...但是原生JS的一些方法在适应各个浏览器的时候写法有的也不怎么一样的... 今天下班有点累... 就来总结一下简单的东西吧…… 备注:一下的方法都是包裹在一个EventU ...
- addEventListener和attachEvent介绍, 原生js和jquery的兼容性写法
也许很多同仁一听到事件监听,第一想到的就是原生js的 addEventListener()事件,的确如此,当然如果只是适用于现代浏览器(IE9.10.11 | ff, chorme, safari, ...
- 常用原生JS兼容性写法汇总
1.添加事件方法 addHandler:function(element,type,handler){ if(element.addEventListener){//检测是否为DOM2级方法 elem ...
- css各浏览器的兼容性写法
各浏览器下的兼容性写法 老版Chrome -webkit-xxx FF -moz-xxx IE9 -ms-xxx opera ...
- JavaScript数组方法的兼容性写法 汇总:indexOf()、forEach()、map()、filter()、some()、every()
ECMA Script5中数组方法如indexOf().forEach().map().filter().some()并不支持IE6-8,但是国内依然有一大部分用户使用IE6-8,而以上数组方法又确实 ...
- 原生js方面的兼容性问题
1.关于获取行外样式 currentStyle 和 getComputedStyle 出现的兼容性问题 我们都知道js通过style不可以获取行外样式,当我们需要获取行外样式时: 我们一般通过这两 ...
- JavaScript 事件兼容性写法
1.以下是JavaScript事件兼容性写法,使用者可以随意使用,兼容所有浏览器.包括IE6(亲测) <!DOCTYPE html> <html> <head> & ...
- js函数的各种写法与调用
以下是我见过的各种js函数的各种写法以及调用,虽然有些写法及其调用我不清楚其专业术语叫啥,但并不影响我写一个总结笔记. 我们刚开始接触js语音,经常看到的这种名叫“使用function关键字来定义函数 ...
- Javascript selection的兼容性写法介绍
本文为大家讲解下Javascript selection的兼容性写法,感兴趣的朋友可以参考下 function getSelectedText() { //this function code is ...
随机推荐
- MySQL Migration Toolkit启动报jre错误
正常启动的话,会报出“an error occurred during the initialization of the runtime system.Please make sure you ha ...
- 关于pom.xml中的MAVEN出错处理
原因:maven与pom的版本不一致 解决方法: 1.升级maven 插件: help--install..... 2.根据出错的信息,找到没有下载成功的本地仓库目录 ,将目录下的文件删除,再在项目上 ...
- C#反射实例(一) 利用反射使用类库
在网上查找了不少的资料,可以说大同小异,概念性的东西网上一搜一堆,今天把反射的东西整理了一下,供大家使用,我保证我这里是最全面的东西,当然也是基础的东西,在学好了这一切的基础上,大家可以学习反射的具体 ...
- 【BZOJ】1654: [Usaco2006 Jan]The Cow Prom 奶牛舞会(tarjan)
http://www.lydsy.com/JudgeOnline/problem.php?id=1654 请不要被这句话误导..“ 如果两只成功跳圆舞的奶牛有绳索相连,那她们可以同属一个组合.” 这句 ...
- linux less使用方法
less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux正统查看文件内容的工具,功能极其强大.less 的用法比起 more 更加的有弹性.在 more 的时候,我们并没有办法向前面翻 ...
- mac 安装memcache扩展问题
执行php -i 报错: Warning: PHP Startup: memcached: Unable to initialize module Module compiled with build ...
- redis问题集
Redis有哪些数据结构? 字符串String.字典Hash.列表List.集合Set.有序集合SortedSet. 如果你是Redis中高级用户,还需要加上下面几种数据结构HyperLogLog.G ...
- android手机常用分辨率
QVGA(240x320) HVGA(320x480) WVGA(800x480) FWVGA(854x480) qHD(960x540) DVGA(960x ...
- Linux 下添加用户,修改权限
最近在用虚拟机,安装了centos,现在想新添加一个用户,在网上找了找方法.[原文链接] # useradd –d /usr/sam -m sam 此命令创建了一个用户sam,其中-d和-m选项用来为 ...
- mybatis的oracle的in超过1000的写法
<if test="preIds != null and preIds.size() > 0"> AND PRE_ID IN <trim suffixOve ...