js部分兼容写法

* 2.获取页面滚动高度      

document.body.scrolltop || document. documentElement.scrolltop document.body.clientHeight || document.documentElement.clientHeight


* 3.事件兼容

function(event){ var evt = event || window.event }

* 4.阻止冒泡

e.stopPropagation(); 标准写法 e.cancelBubble = true; IE写法 e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true;


* 5阻止默认事件

e.preventDefault(); 标准写法 e.returnValue = false; IE写法 e.preventDefault ? e.preventDefault() : e.returnValue = false; 新版本 直接returnfalse




* 6事件监听的添加移除

添加监听的一般写法

function addEvent(DOM,name,callback){//添加事件监听的兼容函数需要传入的参数有dom元素,事件名,和函数名需要事先定义函数 if(DOM.addEventListener){ DOM.addEventListener(name,callback); }else{ DOM.attachEvent(“on”+name,callback); } }

添加监听的高级写法 prototype 属性使您有能力向对象添加属性和方法。

Element.prototype.addEvent = function(name,fn){ //固定写法向原型中添加方法 if(this.addEventListener){ this.addEventListener(name,fn); }else{ this.attachEvent(“on” + name,fn) } }

    oBtn.addEvent("click",function(){
        alert(1);
    });

移除监听的一般写法 function removeEvent(DOM,name,fn){ //console.log(fn);//事件处理函数?; if(DOM.addEventListener){ DOM.removeEventListener(name,fn); }else{ DOM.detachEvent(“on” + name,fn) }

    } ```

8.改变this指向的两种方法

原先用call
function fn( ){
console.log(this)
}
fn.call(123)
//结果为123

bind改变
function fn(){
]}.bind()//运行时会报错
因为bind只能绑定给未命名函数
这时
var fn = function (){
            console.log(this)
        }.bind(123)
        fn();
这样就不会报错了

* 10获取鼠标的信息

鼠标键值 function(event){ var evt = event || window.event // 推荐使用 兼容性好 evt.button// 鼠标键值 左键0 中建 1右键 2 } 鼠标位置(坐标) obox.onmousedown = function( event ){ var evt = event || window.event //1 offsetX offsetY //最小区域的位置信息相对于最近的父元素根据时间发生的元素 //2 clientX clientY //可视区根据浏览器宽高 //3 screenX screenY 根据屏幕的边 }

* 11过滤文本节点


var list = document.getElementsById().childNodes; var newlist = []; for(var i=0; i<list.length; i++){ if(list[i].nodeType == 1){ newlist.push(list[i]); } } ```