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 ...
随机推荐
- setAttribute()使用方法与IE兼容解决方法
我们经常需要在JavaScript中给Element动态添加各种属性,可以使用setAttribute()来实现,但涉及到了浏览器的兼容性问题.setAttribute(string name,str ...
- C#反射实例(一) 利用反射使用类库
在网上查找了不少的资料,可以说大同小异,概念性的东西网上一搜一堆,今天把反射的东西整理了一下,供大家使用,我保证我这里是最全面的东西,当然也是基础的东西,在学好了这一切的基础上,大家可以学习反射的具体 ...
- Flea Circus(Project Euler 213)
original version hackerrank programming version 题目大意是N*N的格子,每个格子一开始有1个跳蚤,每过单位时间跳蚤会等概率向四周跳,问M秒后空格子的期望 ...
- java网络编程2-URL和URI
//创建url可以指定请求的url协议,但不同的jvm支持的协议可能不相同(大部分支持http.file.https) //构造只判断字符串中的协议支不支持,而不判断url的正确性 URL url=n ...
- PatternSyntaxException:Syntax error in regexp pattern
Caused by: java.util.regex.PatternSyntaxException: Syntax error in regexp pattern near index 1: ...
- JavaScript------如何查看var变量是否是指定类型
function isArray(a) { //Date,Array,String,Object,Function,Boolean,Number return a.constructor.toStri ...
- knowledgeroot 的配置与优化
首先下载 KnowledgeRoot 的安装包,就是一个压缩文件,解压缩后放到 WebRoot 下面 在浏览器中打开网站,自动提示进行安装,安装的过程很简单,安装结束后即可以使用. 安装包创建的数据库 ...
- xcode 运行 lua版本崩溃 解决方案
问题描述:运行到LuaStack::init() 崩溃 原因: luajit不支持arm64 解决方案:编译luajit64位静态库 a.可以直接下载别人编译好的库,然后直接覆盖cocos2d\ext ...
- 《Sqlserver》通过端口 8080 连接到主机 localhost 的 TCP/IP 连接失败。错误:“驱动程序收到意外的登录前响应。请验证连接属性,并检查 SQL Server 的实例正在主机上运行,且在此端口接受
1. 点击 开始 --> 所有程序 --> Microsoft SQL Server2005 --> 配置工具-->SQL Server configuration Manag ...
- HDU 5892 Resident Evil
题目链接:传送门 题目大意:有50种动物,给你n*n的矩阵,m次操作,P代表加入操作,在左上角 x1,y1 到右下角 x2,y2,的矩形范围内加入 种类为x,数量为y的动物. Q代表询问操作,在左上角 ...