本文介绍了详解js几个绕不开的事件兼容写法,分享给大家,具体如下:

1、键盘事件 keyCode 兼容性写法
var inp = document.getElementById('inp')
var result = document.getElementById('result')
function getKeyCode(e) {
e = e ? e : (window.event ? window.event : "")
return e.keyCode ? e.keyCode : e.which
}
inp.onkeypress = function(e) {
result.innerHTML = getKeyCode(e)
}
2、求窗口大小的兼容写法
当我们获取滚动条滚动距离时:
IE,Chrome: document.body.scrollTop
FF: document.documentElement.scrollTop
// 浏览器窗口可视区域大小(不包括工具栏和滚动条等边线) // 1600 * 525 var client_w = document.documentElement.clientWidth || document.body.clientWidth; var client_h = document.documentElement.clientHeight || document.body.clientHeight; // 网页内容实际宽高(包括工具栏和滚动条等边线) // 1600 * 8 var scroll_w = document.documentElement.scrollWidth || document.body.scrollWidth; var scroll_h = document.documentElement.scrollHeight || document.body.scrollHeight; // 网页内容实际宽高 (不包括工具栏和滚动条等边线) // 1600 * 8 var offset_w = document.documentElement.offsetWidth || document.body.offsetWidth; var offset_h = document.documentElement.offsetHeight || document.body.offsetHeight; // 滚动的高度 var scroll_Top = document.documentElement.scrollTop||document.body.scrollTop;
3、DOM 事件处理程序的兼容写法(能力检测)
var eventshiv = {
// event兼容
getEvent: function(event) {
return event ? event : window.event;
},
// type兼容
getType: function(event) {
return event.type;
},
// target兼容
getTarget: function(event) {
return event.target ? event.target : event.srcelem;
},
// 添加事件句柄
addHandler: function(elem, type, listener) {
if (elem.addEventListener) {
elem.addEventListener(type, listener, false);
} else if (elem.attachEvent) {
elem.attachEvent('on' + type, listener);
} else {
// 在这里由于.与'on'字符串不能链接,只能用 []
elem['on' + type] = listener;
}
},
// 移除事件句柄
removeHandler: function(elem, type, listener) {
if (elem.removeEventListener) {
elem.removeEventListener(type, listener, false);
} else if (elem.detachEvent) {
elem.detachEvent('on' + type, listener);
} else {
elem['on' + type] = null;
}
},
// 添加事件代理
addAgent: function (elem, type, agent, listener) {
elem.addEventListener(type, function (e) {
if (e.target.matches(agent)) {
listener.call(e.target, e); // this 指向 e.target
}
});
},
// 取消默认行为
preventDefault: function(event) {
if (event.preventDefault) {
event.preventDefault();
} else {
event.returnValue = false;
}
},
// 阻止事件冒泡
stopPropagation: function(event) {
if (event.stopPropagation) {
event.stopPropagation();
} else {
event.cancelBubble = true;
}
}
};
4、解决 IE9 以下浏览器不能使用 opacity
opacity: 0.5; filter: alpha(opacity = 50); filter: progid:DXImageTransform.Microsoft.Alpha(style = 0, opacity = 50);
5、为一个元素绑定两个相同事件:attachEvent/attachEventLister 出现的兼容问题
事件绑定:(不兼容需要两个结合做兼容if..else..)
IE8以下用: attachEvent('事件名',fn);
FF,Chrome,IE9-10用: attachEventLister('事件名',fn,false);
function myAddEvent(obj,ev,fn){
if(obj.attachEvent){
//IE8以下
obj.attachEvent('on'+ev,fn);
}else{
//FF,Chrome,IE9-10
obj.attachEventLister(ev,fn,false);
}
}
6、获取元素的非行间样式值
function getStyle(object,oCss) {
if (object.currentStyle) {
return object.currentStyle[oCss];//IE
}else{
return getComputedStyle(object,null)[oCss];//除了IE
}
}
7、节点加载
//火狐下特有的节点加载事件,就是节点加载完才执行,和onload不同
//感觉用到的不多,直接把js代码放在页面结构后面一样能实现。。
document.addEventListener('DOMContentLoaded',function ( ){},false);//DOM加载完成。好像除IE6-8都可以.
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# js兼容性写法
# js
# 兼容写法
# event兼容写法
# js事件源window.event.srcElement兼容性写法(详解)
# JS onkeypress兼容性写法详解
# 常用原生JS兼容性写法汇总
# Javascript selection的兼容性写法介绍
# IE与Firefox下javascript getyear年份的兼容性写法
# 滚动条
# 加载
# 句柄
# 不包括
# 绑定
# 几个
# 在这里
# 行间
# 放在
# 不多
# 给大家
# 火狐
# 当我们
# 不开
# 特有的
# 只能用
# 大家多多
# 移除
# 不兼容
# getEvent
相关文章:
网页设计与网站制作内容,怎样注册网站?
如何在IIS中新建站点并配置端口与物理路径?
百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?
如何在自有机房高效搭建专业网站?
建站之星云端配置指南:模板选择与SEO优化一键生成
如何在景安服务器上快速搭建个人网站?
广平建站公司哪家专业可靠?如何选择?
矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?
C#如何在一个XML文件中查找并替换文本内容
如何零基础在云服务器搭建WordPress站点?
建站主机解析:虚拟主机配置与服务器选择指南
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
建站之星如何修改网站生成路径?
宁波免费建站如何选择可靠模板与平台?
建站之星北京办公室:智能建站系统与小程序生成方案解析
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
云南网站制作公司有哪些,云南最好的招聘网站是哪个?
微信小程序制作网站有哪些,微信小程序需要做网站吗?
网站企业制作流程,用什么语言做企业网站比较好?
太原网站制作公司有哪些,网约车营运证查询官网?
宝塔新建站点报错如何解决?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
内部网站制作流程,如何建立公司内部网站?
图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?
长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?
香港服务器网站生成指南:免费资源整合与高速稳定配置方案
建站上市公司网站建设方案与SEO优化服务定制指南
如何注册花生壳免费域名并搭建个人网站?
如何快速搭建FTP站点实现文件共享?
如何快速生成专业多端适配建站电话?
,网站推广常用方法?
广州营销型建站服务商推荐:技术优势与SEO优化解析
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
建站VPS配置与SEO优化指南:关键词排名提升策略
如何选择高效便捷的WAP商城建站系统?
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
建站主机选哪种环境更利于SEO优化?
网站按钮制作软件,如何实现网页中按钮的自动点击?
Swift开发中switch语句值绑定模式
已有域名建站全流程解析:网站搭建步骤与建站工具选择
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
定制建站哪家更专业可靠?推荐榜单揭晓
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?
北京网站制作公司哪家好一点,北京租房网站有哪些?
,网页ppt怎么弄成自己的ppt?
*请认真填写需求信息,我们会在24小时内与您取得联系。