Onscroll功能不适用于Chrome

spr*_*ran 6 javascript

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

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

var Test = new function()
{
   this.callFn = function()
   {
      console.log("Calling this function");
   }
}
Run Code Online (Sandbox Code Playgroud)

谢谢

mar*_*web 7

我也遇到了同样的问题,那是因为我已经overflow-x: hidden分配给了身体。删除这个问题就解决了。


jcs*_*nyi 6

您不希望()在分配callFn为onscroll处理程序时.
您不想执行该功能,您想为其分配引用.

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

window.onscroll = Test.callFn;
Run Code Online (Sandbox Code Playgroud)


alc*_*vil 6

我今天遇到了类似的问题.你可以document.body改为window:

window.onload = function()
{
   window.onscroll = function()
   {
      console.log("Calling this function");
   }
}
Run Code Online (Sandbox Code Playgroud)

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

PS.如果你想检查滚动的像素数 - 使用window.pageYOffset而不是document.body.scrollTop(与上面描述的chrome和IE相同的情况).


小智 5

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

尝试使用min-heightormax-height代替。


J. *_*uni 1

在 Chrome 中,如果将事件处理程序附加到document.onscroll事件,它就会起作用:

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

  • 你不可能是认真的。它在 Chrome 中确实有效。 (4认同)