兼容总结


  • 如果两个都是属性,用逻辑 || 做兼容
  • 如果有一个是方法,用三元做兼容
  • 如果多个属性或方法,封装函数做兼容

获取class属性值的兼容

function getClass (obj){
if(obj.getAttribute("class") == null){
return (obj.getAttribute("className")
}else{
return (obj.getAttribute("class")
}
}

获取className兼容

function byClassName (className){
if(document.getElementsByClassName){
return document.getElementsByClassName(className);
}else{
var arr = [];
var ele = document.getElementsByTanName("*");
for(var i = 0; i < ele.length; i++){
if(ele[i].className == className){
arr.push(ele[i]);
}
}
return arr;
}
}

滚动高度兼容

 var scrollTop = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;

获取非行内样式的兼容

function getStyle(obj,attr){
return obj.currentStyle ? obj.currentStyle[attr] : getConputedStyle(obj,1)[attr];
}

获取事件Event兼容

oBtn.onclick = function(event){
event = event || window.event;
}

键盘值的兼容

function key(evt){
var e = evt || window.event
var keyvalue = e.getCode || e.charCOde || e.which;
return keyvalue;
}

阻止事件冒泡

function stop (e){
var e = e || window.event;
return e.stopPropagtion ? e.stopPropagtion() : e.cancelBubble = true;
}

阻止超链接的默认行为

oA.onclick = function (e){
var e = e || window.event;
e.preventDefault ? e.preventDefault() : e.returnValue = false;
}

事件源委托兼容

function target(evt){
var e = evt || window.event;
var target = e.target || e.srcElement;
return target;
}

获取鼠标值的兼容

function getButton(evt){
var e = evt || window.event;
if(evt){
return e.button;
}else if(window.event){
switch(e.button){
case 1 : return 0;
case 4 : return 1;
case 2 : return 2;
}
}
}

添加事件的兼容

function addEventListener(obj,evt,fn,boo){
if(obj.addEventListener){
obj.addEventListener(evt,fn,boo);
}else{
obj.attachEvent("on" + evt , fn);
}
}

移除事件的兼容

function removeEventListener(obj,evt,fn,boo){
if(obj.removeEventListener){
obj.removeEventListener(evt,fn,boo);
}else{
obj.detachEvent("on" + evt , fn);
}
}

JavaScript的兼容的更多相关文章

  1. JavaScript XML 兼容处理,序列化和反序列化以及回调事件

    浏览器中XML DOM的支持 IE中通过ActiveXObject实现了XML的支持,存在一下几个版本:Microsoft.XmlDom,MSXML2.DOMDocument,MSXML2.DOMDo ...

  2. JavaScript的兼容小坑和调试小技巧

    JavaScript作为一种弱类型编程语言,入门简单,只要稍微注意一下IE方面的兼容性,就可以很好的使用它. 本文主要是对IE兼容的小坑和调试的小技巧进行举例分析,并给出解决方法. 1.var str ...

  3. javascript ie8兼容 a标签href javascript:void(0);

    ie8兼容 a标签href javascript:void(0); 尽量不要用javascript:协议做为A的href属性,这样不仅会导致不必要的触发window.onbeforeunload事件;

  4. JavaScript js 兼容浏览器问题 兼容Fire

    做BS开发就难免会用到javascript,而每个浏览器对javascript的支持有不同.这就需要我们程序员去兼容他们,不然有些浏览器就无法运行我们的代码.就会造来客户的投诉,如果让BoSS知道了, ...

  5. javascript event兼容IE和FF

    事件对象在IE和FF下的兼容写法 function abc(event){ var e=event||window.event; //键盘码的捕获 var key=e.which||e.keyCode ...

  6. 简单实现 C# 与 Javascript的兼容

    本文章介绍下自己这刚实现的一个c#与js交互的插件.需求来源于一次与朋友的讨论.主要对话如下: 朋友:最近我想模拟一些数据,来测试我现在写的接口,但手工编写这些测试数据太麻烦了 本人:是啊,.net能 ...

  7. JavaScript文件下载 兼容所有浏览器 不可跨域

    前端文件下载 兼容所有浏览器 download.js文件下载,几乎支持所有类型下载,详细内容参考官网 http://danml.com/download.html 引入文件 <script sr ...

  8. javascript 常用兼容fire fox的解决办法

    常用兼容fire fox的解决办法 一.js不兼容:1.event不兼容,必须通过参数传递过来: function test(event){ //兼容fire fox var event = even ...

  9. 聊聊一直困扰前端程序员的浏览器兼容-【JavaScript】

    上篇已经写过浏览器的兼容发展历史以及主流浏览器,主要的css兼容我知道的已全部写到,这篇这篇专攻javascript的兼容. 1.getYear()方法 var year = new Date().g ...

随机推荐

  1. Ricequant-米筐金工-估值因子

    Ricequant米筐金工--因子分析 作者:戴宇.小湖 上一篇介绍了单因子检验是因子分析前重要的一个步骤,是构建因子库.建立因子模型的基础,这篇报告首先对常见估值因子进行初步的检验. 第一篇.估值因 ...

  2. 页面固定DIV层CSS代码

    有时候为了用户体验更好些,网页设计师会把网站导航放在一个固定的DIV层里面,不随滚动条滚动.本方法是利用CSS,position:fixed属性来固定层,fixed是特殊的absolute,即fixe ...

  3. JS代码中!!的用法,以及代码性能对比

    一.!!的理解 解释: !!的意思就是把一个任意类型的值转换为布尔类型的值,一个!是取非 再一个!又取非,相当于把这个数据转换为boolen类型了. 使用场景: 常常用在if(a).if(!!a)这样 ...

  4. win10 uwp 存放网络图片到本地

    有时候我们的网络很垃圾,我的的UWP要在第一次打开网络图片,就把图片存放到本地,下次可以从本地打开. 有时候用户使用的是流量网络,不能每次都联网下载. 我们不得在应用存放用户打开的图片. 这就是先把图 ...

  5. 在centos6编译配置httpd2.4的N种方法

    前言 我们使用linux的过程中,一定会用到httpd这个服务,在centos7上,默认安装的httpd就是2.4版本,大家都知道,2.4版本相对之前的版本已经做了改进,用起来更加方便,但是我们的ce ...

  6. JDBC基本开发

    JDBC基本开发步骤 一:注册驱动 方式一:DriverManager.registerDriver(new Driver()); //存在注册两次问题,性能较低,消耗资源 方式二:Class.for ...

  7. Hadoop Streaming详解

    一: Hadoop Streaming详解 1.Streaming的作用 Hadoop Streaming框架,最大的好处是,让任何语言编写的map, reduce程序能够在hadoop集群上运行:m ...

  8. C++继承(07)

    继承 通过特殊化已有的类来建立新类的过程,叫做“类的派生”,原来的类叫做“基类”,新建立的类则叫做“派生类”.另一方面,从类的成员角度看,派生类自动地将基类的所有成员作为自己的成员,这叫做“继承”.基 ...

  9. LeetCode 277. Find the Celebrity (找到明星)$

    Suppose you are at a party with n people (labeled from 0 to n - 1) and among them, there may exist o ...

  10. swift之函数式编程(三)

    文章来源于<Functional Programing in Swift>,本系列仅仅是观后概括的一些内容 Wrapping Core Image 上一篇文章我们介绍了 高阶函数并且展示了 ...