JS兼容问题
//1.滚动条到顶端的距离
  var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
//2.滚动条到左边的距离
  var scrollLeft = document.documentElement.scrollLeft || document.body.ScrollLeft;
//3.byClassName的兼容(通过class获取指定的对象)
  function byClassName(obj,className){
	    //判断是否支持byClassName方法
	    if(obj.getElementsByClassName){
		      //直接使用
		      return obj.getElementsByClassName(className);
	    }else{//不支持
		      //获取所有的标签
		      var eles = obj.getElementsByTagName("*");
		      var arr = [];
		      //获取每一个标签对象
		      for(var i = 0,len = eles.length;i < len;i++){
			        //判断每一个对象是否具有指定的className
			        if(eles[i].className === className){
				          arr.push(eles[i]);
			        }
		      }
		      return arr;
	    }
  }
//4.获取元素对象中class属性值的兼容
  function getClassValue(obj){
	    return obj.getAttribute('class') ? obj.getAttribute('class') : obj.getAttribute('className');
  }
//5.获取非行内样式的兼容
  function getStyle(obj,attr){
	    return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj,1)[attr];
  }
//6.获取事件对象的兼容
  evt = evt || window.event;
//7.获取鼠标编码值得兼容
  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;
		      }
	    }
  }
//8.阻止事件冒泡的兼容
  event.stopPropagation ? event.stopPropagation() : event.cancelBubble = true;
//9.获取键盘编码值onkeypress的兼容
  event.keyCode || event.charCode || event.which;
//10.阻止超链接的默认行为的兼容
  event.preventDefault ? event.preventDefault() : event.returnValue = false;
//11.添加事件监听的兼容
  function addEventListener(obj,event,fn,bool){
	    if(obj.addEventListener){
		      obj.addEventListener(event,fn,bool);
	    }else if(obj.attachEvent){
		      obj.attachEvent('on' + event,fn);
	    }
  }
//12.移除事件监听器的兼容
  function removeEventListener(obj,event,fn, bool){
	    if(obj.removeEventListener){
		      obj.removeEventListener(event,fn,bool);
	    }else if(obj.detachEvent){
		      obj.detachEvent('on' + event,fn);
	    }
  }
//13.获取事件源的兼容
  var target = event.target || event.srcElement;
//14.创建Ajax(XMLHttpRequest)对象兼容
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
JS兼容问题的更多相关文章
- io.js - 兼容 NPM 平台的 Node.js 新分支
		io.js(JavaScript I/O)是兼容 NPM 平台的 Node.js 新分支,由 Node.js 的核心开发者在 Node.js 的基础上,引入更多的 ES6 特性,它的目的是提供更快的和 ... 
- 初学canvas,遇到width和height显示问题和用excanvas.js兼容IE问题
		/*-----------------------ITEYE 祈祷幸福博客原创,转载请注明.-------------------*/ 第一次认真写技术博客文~~~若有不严谨的地方,望指正. 今天是第 ... 
- css   js  兼容问题
		js 兼容问题 1. document.form.item 问题问题:代码中存在 document.formName.item("itemName") 这样的语句,不能在FF下运 ... 
- js兼容火狐显示上传图片预览效果
		js兼容火狐显示上传图片预览效果[谷歌也适用] <!doctype html> <html> <head> <meta content="text/ ... 
- 拖放排序插件Sortable.js   兼容好及功能全个人觉得比dragula.js 好的多
		经测试,Sortable.js 兼容好和使用方便都是比较不错的,特别手机端使用很棒 介绍 Sortable.js是一款轻量级的拖放排序列表的js插件(虽然体积小,但是功能很强大)下载地址:https: ... 
- JS兼容各个浏览器的本地图片上传即时预览效果
		JS兼容各个浏览器的本地图片上传即时预览效果 很早以前 在工作曾经碰到这么一个需求,当时也是纠结了很久,也是google了很久,没有碰到合适的demo,今天特意研究了下这方面的的问题,所以也就做了个简 ... 
- [转]FireFox与IE 下js兼容触发click事件的代码
		本文转自:http://www.jb51.net/article/16549.htm FireFox与IE 下js兼容触发click事件 ,对于需要兼容这两者的朋友,就需要参考下下面的代码了<a ... 
- js兼容注意事项--仅供参考
		做BS开发就难免会用到javascript,而每个浏览器对javascript的支持有不同.这就需要我们程序员去兼容他们,不然有些浏览器就无法运行我们的代码.就会造来客户的投诉,如果让BoSS知道了, ... 
- JS兼容IE浏览器的方法
		背景 系统需要兼容蛋疼的IE6... 解决方案 *{ 兼容IE6-8 }* <!--[if lt IE 9]> <script src="@{'/public/mng/ja ... 
- JS兼容getElementsByClassName
		getElementsByClassName是通过class来获取DOM,但是IE8及以下不能兼容.这里做了一下兼容性. HTML: <div class="pox"> ... 
随机推荐
- SQLServer的三种Recovery Model
			SQL Server恢复模式的三种类型的比较 此文章主要向大家讲述的是SQL Server恢复模式,我们主要介绍的是三种恢复模式,其中包括简单SQL Server数据库的恢复模式.完整恢复模式与大容量 ... 
- python浅拷贝和深拷贝
			博文参考地址:https://blog.csdn.net/qq_20084101/article/details/82925067 最近在撸码的时候发现了一个严重的问题: a = [1,2] c = ... 
- 【原】Java学习笔记004 - 运算符
			package cn.temptation; public class Sample01 { public static void main(String[] args) { // 运算符:对常量 或 ... 
- Windows server 2012 R2 部署WSUS补丁服务
			一.WSUS 安装要求 1.硬件要求: 对于多达 13000 个客户端的服务器,建议使用以下硬件:* 4 Core E5-2609 2.1GHz 的处理器* 8 GB 的 RAM 2.软件要求: 要使 ... 
- Extjs 解决grid分页bug问题
			//从后端获取数据加载到grid中var mainStore = new HeJsonStore({ url:'xxx', autoLoad:true, pageSize:20 }) //此方法最好放 ... 
- C#基础知识之Dictionary
			最近使用了Dictionary,出现了意想不到的错误,先记录一下自己遇到的问题以及目前我的解决方法,然后温习一下Dictionary的基础用法. 一.自己遇到的问题 1.代码如下: namespace ... 
- SQL UNIQUE 约束
			SQL UNIQUE 约束 UNIQUE 约束唯一标识数据库表中的每条记录. UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证. PRIMARY KEY 拥有自动定义的 ... 
- vue.js sha256加密
			sha256: 1.使用cnpm安装 :cnpm install js-sha256 2.然后在组件中methods定义方法,在调用 let sha256 = require("js-sha ... 
- C# — 调用dll出现试图加载不正确格式的程序问题
			今天在调用百度dll包时,运行项目出现了如下警告: 修改:鼠标右击项目名称----选择属性----生成-----平台目标-----X64(由于我调用的是X64的dll包,所以这里选择X64,网上许多说 ... 
- 模型加速[tensorflow&tensorrt]
			在tensorflow1.8之后的版本中,tensorflow.contrib部分都有tensorrt的组件,该组件存在的意义在于,你可以读取pb文件,并调用tensorrt的方法进行subgraph ... 
