当前位置: 代码迷 >> JavaScript >> 如果有多个window.onscroll=function(){}怎么办
  详细解决方案

如果有多个window.onscroll=function(){}怎么办

热度:433   发布时间:2013-04-09 16:45:09.0
如果有多个window.onscroll=function(){}怎么处理?
如果一个页面 将会出现多个
window.onscroll=function(){..}
类似这样的语句。

页面从上到下, 
已知 已经 先出现了一个window.onscroll=function(){..}

在下游 还将用到一个window.onscroll=function(){..}
这样的语句。,

那么,作为下游的代码。,为了不使代码重叠冲突,应该如何书写?

把后面的function 附加给给某个东西,
onscroll

------解决方案--------------------
如果一个页面出现多个window.onscroll=function(){...}后果是只有最后一个正常运行。
解决方法可以使用jquery
$(document).ready(function(){
    $(window).scroll(function(){alert(0)});
    $(window).scroll(function(){alert(1)});
})
这样是不会相互替换函数的。
------解决方案--------------------


window.onscroll=function(){
    alert('first scroll');
}

var oldMethod = window.onscroll;
if(typeof oldMethod == 'function'){
    window.onscroll = function(){
        oldMethod.call(this);
        alert('second method');
    }
}


或者用addEventListener(FF)跟attachEvent(IE)。

function addEvent(obj,type,fn){
    if(obj.attachEvent){
        obj.attachEvent('on'+type,function(){
            fn.call(obj);
        })
    }else{
        obj.addEventListener(type,fn,false);
    }
}
addEvent(window,'scroll',function(){
    alert('first method')
});
addEvent(window,'scroll',function(){
    alert('second method')
});


或者像#1那样jquery的写法。
  相关解决方案