好程序员分享javascript中的常见的兼容写法

简介:

好程序员分享javascript中的常见的兼容写法
1 .获取后一个兄弟节点的兼容写法
var nextElement=oLi3.nextElementSibling||oLi3.nextSibling;

  1. 获取前一个兄弟节点兼容写法
    var previousElement = oLi3.previousElementSibling || oLi3.previousSibling;
  2. childNodes的兼容使用
    function getChildNodes(ele) {

//1.定义一个空的数组
var arr = [];
//2.获取指定元素
var oEle = document.querySelector(ele);
//3.将元素下边的所有儿子拿到
for (var i = 0; i < oEle.childNodes.length; i++) {
//4.变量判断真的儿子(元素节点nodeType==1)
if (oEle.childNodes[i].nodeType == 1) {
//5.将真儿子添加到数组里

            arr.push(oEle.childNodes[i])

}
}
//6.返回数组
return arr;
}
4.拿到第一个儿子
var No1 = oBox.firstElementChild || oBox.firstChild;
5.拿到最后 个儿子
var oLast = oBox.lastElementChild || oBox.lastChild;
6.事件目标对象兼容
var t = event.target || event.srcElement;
滚动条的兼容写法
一 简单兼容写法

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

二 高级兼容写法
function myScroll() {
// ie9以上, google,火狐都能用
if (window.pageXOffset != undefined) {
return {
"left": window.pageXOffset,
"top": window.pageYOffset
}
} else if (document.compatMode == "CSS1Compat") {
// 标准 DTD (有声明头)
return {
"left": document.documentElement.scrollLeft,
"top": document.documentElement.scrollTop
}
}
// 非标准 没有 DTD (没有声明头)
return {
"left": document.body.scrollLeft,
"top": document.body.scrollTop
}
}
html5的新标签在 ie 6 7 8 下有兼容问题,解决原理是 动态创建标签 document.createElement,我可以是快速使用html5shiv插件
事件对象的兼容写法
var e=evt||window.event;
键盘事件
var keyCode = e.keyCode || e.which;
获取样式的兼容写法
function getStyle(obj, attr) {
// 非ie,google,火狐
if (window.getComputedStyle) {
return window.getComputedStyle(obj, null)[attr];
}
//ie 6 8 9
return obj.currentStyle[attr];
}
阻止冒泡的兼容
if (e.stopPropagation) {

    e.stopPropagation();

} else {

    e.cancelBubble = true;

}
阻止默认行为
if (e.preventDefault) {

    e.preventDefault()

} else {

    e.returnValue = false;

}
事件监听的兼容写法

oBtn.addEventListener("click", function () {

alert("长沙千锋老罗最帅");
}, {

    once: true, // 只能被点一次
    useCapture: true // true||false

})

//obj 给指定的元素添加事件
//type 事件的类型(click,mouseenter..)
//fn 函数名称
//useCapTure 捕获还是冒泡

function addEvent(obj, type, fn, useCapTure) {
if (obj.addEventListener) {

        obj.addEventListener(type, fn, useCapTure)

} else {

        obj.attachEvent("on" + type, fn)

}
}
事件监听移除兼容写法
function removeEvent(obj, type, fn, useCapTure) {
if (obj.removeEventListener) {

        obj.removeEventListener(type, fn, useCapTure);

} else {

        obj.detachEvent("on" + type, fn);

}
}

相关文章
|
5月前
|
存储 JavaScript 前端开发
写给不耐烦程序员的 JavaScript 指南(二)
写给不耐烦程序员的 JavaScript 指南(二)
72 0
|
5月前
|
存储 JavaScript 前端开发
写给不耐烦程序员的 JavaScript 指南(四)
写给不耐烦程序员的 JavaScript 指南(四)
44 0
|
5月前
|
JavaScript 前端开发 测试技术
写给不耐烦程序员的 JavaScript 指南(三)
写给不耐烦程序员的 JavaScript 指南(三)
50 0
|
2月前
|
存储 JavaScript 前端开发
后端程序员的前端基础-前端三剑客之JavaScript
后端程序员的前端基础-前端三剑客之JavaScript
27 4
|
2月前
|
JavaScript 前端开发 程序员
程序员必看:利用JavaScript的算术运算符大幅提升代码效率?
程序员必看:利用JavaScript的算术运算符大幅提升代码效率?
|
4月前
|
Web App开发 JavaScript 前端开发
程序员必知:【three.js练习程序】创建地球贴图
程序员必知:【three.js练习程序】创建地球贴图
39 0
|
5月前
|
存储 JavaScript 前端开发
写给不耐烦程序员的 JavaScript 指南(一)
写给不耐烦程序员的 JavaScript 指南(一)
63 0
|
4月前
|
缓存 JavaScript 前端开发
老程序员分享:js刷新页面得重新加载和页面的刷新
老程序员分享:js刷新页面得重新加载和页面的刷新
36 0
|
4月前
|
缓存 JavaScript 前端开发
程序员必知:广告等第三方应用嵌入到web页面方案之使用js片段
程序员必知:广告等第三方应用嵌入到web页面方案之使用js片段
62 0
|
4月前
|
JavaScript 前端开发 IDE
程序员必知:WPSJSA宏编程(JS):1.初识
程序员必知:WPSJSA宏编程(JS):1.初识
231 0