js兼容性写法的收集

事件监听绑定考虑IE6-7兼容性

addEvent: function (ele,fn,str) {
  //通过判断调用的方式兼容IE678
  //判断浏览器是否支持该方法,如果支持那么调用,如果不支持换其他方法
  if(ele.addEventListener){
    //直接调用
    //火狐谷歌IE9+支持addEventListener
    ele.addEventListener(str,fn);
  }else if(ele.attachEvent){
    //IE678支持attachEvent
    ele.attachEvent("on"+str,fn);
  }else{
    //在addEventListener和attachEvent都不存在的情况下,用此代码
    ele["on"+str] = fn;
  }
},
removeEvent: function (ele,fn,str) {
  if(ele.removeEventListener){
    ele.removeEventListener(str,fn);
  }else if(ele.detachEvent){
    ele.detachEvent("on"+str,fn);
  }else{
    ele["on"+str] = null;
  }
}

参考: https://www.cnblogs.com/zp0818/p/9236605.html

获取事件源

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


function whichElement(e){
	var targ;
	if (!e){
		var e=window.event;
	}if (e.target){
		targ=e.target;
	}else if (e.srcElement){
		targ=e.srcElement;
	}
	var tname;
	tname=targ.tagName;
	alert("你点击了一个" + tname + " 元素。");
}
<body onmousedown="whichElement(event)">

参考: https://www.runoob.com/try/try.php?filename=tryjsref_event_srcelement

获取CSS当前属性值

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

阻止冒泡

if(event && event.stopPropagation){
    event.stopPropagation();
}else{
    event.cancelBubble = true;
}

元素被卷去的像素距离-scrollTop&scrollLeft

var x =window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft;
var y = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;

屏幕可视区域的宽高-clientWidth&clientHeight

ps:该属性值会被四舍五入为一个整数。

function client(){
    if(window.innerHeight !== undefined){
        return {
            "width": window.innerWidth,
            "height": window.innerHeight
        }
    }else if(document.compatMode === "CSS1Compat"){
        return {
            "width": document.documentElement.clientWidth,
            "height": document.documentElement.clientHeight
        }
    }else{
        return {
            "width": document.body.clientWidth,
            "height": document.body.clientHeight
        }
    }
}

获取鼠标位置-event.pageX&event.pageY

var pagex = event.pageX || scroll().left + event.clientX;
var pagey = event.pageY || scroll().top + event.clientY;

禁止文本被选中

ps:实质是选中后取消选中,此句不需赋值,判断有对应方法,直接执行方法。

window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();

获取第一个子元素

var firstNode = ele.firstElementChild || ele.firstChild;

获取最后一个子元素

var lastNode = ele.lastElementChild || ele.lastChild;

获取下一个兄弟节点

var nextNode = ele.nextElementSibling || ele.nextSibling;

获取上一个兄弟节点

var prevNode = ele.previousElementSibling || ele.previousSibling;

获取指定索引兄弟节点

ps:index表示从0开始的索引。

var node = ele.parentNode.children[index];

获取元素的所有兄弟节点(不包括自身)
function getAllSiblings(ele){
    //定义一个新数组,装所有的兄弟元素,将来返回
    var newArr = [];
    var arr = ele.parentNode.children;
    for(var i=0;i<arr.length;i++){
        //判断,如果不是传递过来的元素本身,那么添加到新数组中。
        if(arr[i]!==ele){
            newArr.push(arr[i]);
        }
    }
    return newArr;
}

参考:https://blog.csdn.net/haishangfeie/article/details/77649112

获取键盘编码值的兼容

var code = event.keyCode || event.charCode || event.which;

阻止超链接的默认行为

event.preventDefault ? event.preventDefault() : event.returnValue = false;

参考: https://www.cnblogs.com/arguments/p/10319841.html

chrome下Date和firefox下date的转换

对于字符串格式"01-Apr-2019"在chrome下能通过new Date()直接转化,但是firefox下会直接转化为NaN,经过查找原因,firefox不支持字符串中带‘-’的时间格式。使用字符串替换掉-可以解决

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值