JS中的一些兼容性问题

js中的一些兼容性问题:
1)获取滚动高度:

document.documentElement.scrollTop || document.body.scrollTop

2)DOM高级选取

firstChild\firstElementChild 第一个子节点

     oFirst=oUl.firstElementChild || oUl.firstChild  //(位置不能换)

lastChild\lastElementChild 最后一个子节点

oLast=oUl.lastElementChild || oUl.lastChild

兄弟节点(有兼容性问题)

 nextSibling\nextElementSibling  下一个节点      
	 oNext=oUl. nextElementSibling || oUl.nextSibling 

nextSibling属性返回元素节点之后的兄弟节点(包括文本节点、注释节点即回车、换行、空格、文本等等);
nextElementSibling属性只返回元素节点之后的兄弟元素节点(不包括文本节点、注释节点);

previousSibling\previousElementSibling 上一个节点

	  oPrevious=oUl. previousElementSibling || oUl. previousSibling

previousSibling 属性返回元素节点之前的兄弟节点(包括文本节点、注释节点);
previousElementSibling 属性只返回元素节点之前的兄弟元素节点(不包括文本节点、注释节点)

3)获取非行内样式的兼容

function getStyle(domobj,attr){
	if(window.getComputedStyle){
		return getComputedStyle(domobj,null)[attr];
	}
	return domobj.currentStyle[attr];
}

4)Event对象获取方式

var e = e || event

获取事件源的兼容性写法

evt.target || evt.srcElement

获取键盘信息兼容
keyCode/which

document.onkeydown = function(e){
	var evt = e || event;
	//判断是否按下了三个热键,值为布尔值
	console.log(evt.ctrlKey,evt.altKey,evt.shiftKey);
	console.log(evt.keyCode,evt.which);
	//var code = evt.keyCode||evt.which;
}

阻止事件冒泡

if (evt.stopPropagation){
evt.stopPropagation();
}esle{
evt.cancelBubble = true;
}//判断stopPropagation是否存在,如果存在则用标准写法否则则用IE的写法,不可反过来判断

5)阻止默认行为的方式
1)、event.preventDefault(); (现代浏览器)
2)、event.returnValue = false; (IE低版本)
3)、return false;

if(evt.preventDefault){
	evt.preventDefault();
}else{
	evt.returnValue = false;
}

6) 事件监听兼容
添加:

function addEvent(domobj,type,fn){
				if(domobj.addEventListener){
					domobj.addEventListener(type,fn);
				}else{
					domobj.attachEvent("on"+type,fn);
				}
			}

移除:

		function removeEvent(domobj,type,fn){
				if(domobj.removeEventListener){
					domobj.removeEventListener(type,fn);
				}else{
					domobj.detachEvent("on"+type,fn);
				}
			}
 

7).创建ajax对象

if(window.XMLHttpRequest){
	var xhr = new XMLHttpRequest();
}else{
	var xhr = new ActiveXObject("Microsoft.XMLHTTP");
}

以上就是我所分享在JS中常见的兼容性写法,还有很多,就不再一一列举了!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值