2014-10-20 76 views
1

我已经注意到了鼠标滚轮使用全身,而不是通过使用最新版本的Chrome的任何其他元素时鼠标滚轮时不会触发事件。 (38.0.2125.104米)。鼠标滚轮事件不会触发了身体在Chrome

使用绝对定位元素时会发生这种情况。

您可以在this fiddle中通过滚动白色区域而不是红色区域来重现它。

任何想法为什么会发生这种情况?任何解决方案?对于小提琴

使用的代码:

addMouseWheelHandler(); 

function addMouseWheelHandler() { 
    if (document.addEventListener) { 
     document.addEventListener("mousewheel", MouseWheelHandler, false); //IE9, Chrome, Safari, Oper 
     document.addEventListener("wheel", MouseWheelHandler, false); //Firefox 
    } else { 
     document.attachEvent("onmousewheel", MouseWheelHandler); //IE 6/7/8 
    } 
} 



function MouseWheelHandler(e) { 
    e = window.event || e; 

    var delta = Math.max(-1, Math.min(1, (e.wheelDelta || -e.deltaY || -e.detail))); 
    console.log("mouse wheel!" + delta); 

    return false; 
} 

回答

2

这似乎是一个错误更改内容。事件监听器被附加到文档中,所以它应该适用于整个文档,而不管body元素的高度。

作为变通,您可以添加以下代码:

document.body.style.height= document.body.scrollHeight+'px'; 
+0

警告:看document.body.scrollHeight因为改变不是微不足道的。我在体内添加了一个包装元素并观察该元素上的鼠标滚轮,取得了较好的成功。 – ryascl 2015-07-21 13:55:03

0

这是因为你的身体有没有高度,所以你滚动的文档之外。如果孩子是绝对定位的,父元素不会扩大到它的孩子的大小。尝试添加这样的事情:

html, body { 
    min-height: 2000px; 
} 

position: absolute;

+1

这听起来不像是最好的解决办法,它会增加滚动区域... – Alvaro 2014-10-20 21:18:06

相关问题