Onscroll功能不适用于Chrome

时间:2013-06-10 04:05:14

标签: javascript

以下代码适用于Firefox浏览器。但是,不是铬。下面的代码有什么问题?

window.onload = function()
{
   document.body.onscroll =  Test.callFn;
}

var Test = new function()
{
   this.callFn = function()
   {
      console.log("Calling this function");
   }
}

由于

7 个答案:

答案 0 :(得分:6)

当您将()指定为onscroll处理程序时,您不希望callFn
您不想执行该功能,您想为其分配一个引用。

此外,整个文档的onscroll似乎在window对象上更好地跨浏览器,而不是documentdocument.body

window.onscroll = Test.callFn;

答案 1 :(得分:6)

我今天遇到过类似的问题。您可以将document.body更改为window

window.onload = function()
{
   window.onscroll = function()
   {
      console.log("Calling this function");
   }
}

我注意到,当onscroll元素具有body属性时,chrome onscroll事件正在运行,但在IE中,当html元素具有onscroll属性时它正在工作,因此最好将onscroll事件监听器分配给window对象。

PS。如果您想查看滚动的像素数,请使用window.pageYOffset代替document.body.scrollTop(与上述Chrome和IE相同的情况)。

答案 2 :(得分:2)

可能的一种可能性是页面上有两个window.onscroll语句,每个语句调用不同的JS方法。检查包含的文件和页面加载中的所有方法。

答案 3 :(得分:2)

我遇到了同样的问题,这是因为我为身体分配了{{1}}。消除它可以解决问题。

答案 4 :(得分:2)

使用CSS的height属性设置元素的样式时,window.onscroll有时不起作用。

尝试使用min-heightmax-height

答案 5 :(得分:0)

在Chrome中,如果您将事件处理程序附加到document.onscroll事件:

,则可以使用它

document.onscroll = function() { console.log('Works in Chrome!'); };

答案 6 :(得分:0)

htmlbody标签的高度设置为100%,并且窗口和文档的滚动事件均不会触发时,也会发生这种情况。为了检查滚动了哪个元素,我对Aaron Mason's snippet进行了一些修改,但这对我也不起作用:

document.querySelectorAll('*').forEach(function(elem) {
    elem.addEventListener('scroll', function() {
        console.log(this);
    });
});