以下代码适用于 Firefox 浏览器。但是,不是铬。下面的代码有什么问题?
window.onload = function()
{
document.body.onscroll = Test.callFn;
}
var Test = new function()
{
this.callFn = function()
{
console.log("Calling this function");
}
}
谢谢
以下代码适用于 Firefox 浏览器。但是,不是铬。下面的代码有什么问题?
window.onload = function()
{
document.body.onscroll = Test.callFn;
}
var Test = new function()
{
this.callFn = function()
{
console.log("Calling this function");
}
}
谢谢
我今天有类似的问题。您可以更改document.body
为window
:
window.onload = function()
{
window.onscroll = function()
{
console.log("Calling this function");
}
}
我注意到在 chromeonscroll
中事件在body
元素具有onscroll
属性时起作用,但在 IE 中它在html
元素具有onscroll
属性时起作用,因此最好将onscroll
事件侦听器分配给window
对象。
PS。如果你想检查你滚动了多少像素 - 使用window.pageYOffset
而不是document.body.scrollTop
(与上面描述的 chrome 和 IE 相同的情况)。
()
当您分配callFn
为 onscroll 处理程序时,您不希望。
你不想执行这个函数,你想给它分配一个引用。
此外,整个文档的 onscroll 似乎在window
对象上更好地跨浏览器工作,而不是document
or document.body
。
window.onscroll = Test.callFn;
我有同样的问题,这是因为我已经overflow-x: hidden
分配给身体。删除这个解决了这个问题。
height
当您使用css的属性为元素设置样式时,window.onscroll 有时不起作用。
尝试使用min-height
ormax-height
代替。
一种可能性是您的页面上有两个window.onscroll
语句,每个语句调用不同的 JS 方法。检查包含的文件和页面加载中的所有方法。
html
当和标签的高度body
设置为 100% 并且滚动事件不会为窗口或文档触发时,也可能会发生这种情况。为了检查滚动了哪个元素,我稍微修改了Aaron Mason 的片段,这对我也不起作用:
document.querySelectorAll('*').forEach(function(elem) {
elem.addEventListener('scroll', function() {
console.log(this);
});
});
在 Chrome 中,如果您将事件处理程序附加到事件,它就会起作用document.onscroll
:
document.onscroll = function() { console.log('Works in Chrome!'); };