在Firefox中禁用主窗口滚动onmouseenter iframe

Res*_*ted 3 html javascript iframe firefox scroll

我想禁用主页面上的滚动,但是当鼠标悬停在iframe上时不在iframe内.你可以在这里更清楚地看到我的意思.

如果iframe正在拾取鼠标滚轮事件,那么当鼠标在iframe中时,我不希望整个页面向下滚动.请注意,它在chrome中工作,而不是在ff中.

编辑:键盘组件甚至按预期工作!

注意:

滚动启用/禁用基于此处的代码

Jas*_*ols 5

更简单的解决方案:

给你的父体一个id("bodyID"在例子中),然后在你的启用和禁用滚动功能中添加:

function disable_scroll()
{
    document.getElementById("bodyID").style.overflow="hidden";
}

function enable_scroll()
{
    document.getElementById("bodyID").style.overflow="auto";
}
Run Code Online (Sandbox Code Playgroud)

基本上,由于您不希望父页面滚动,而不是针对单个事件,只需在光标位于内部时完全禁用父页面的滚动iframe.简单,跨浏览器,更直接.

实际上,您可以消除90%的代码,并且只需使用

function disable_scroll()
{
    document.getElementById("bodyID").style.overflow="hidden";
}

function enable_scroll()
{
    document.getElementById("bodyID").style.overflow="auto";
}
document.getElementById("miframe").onmouseenter = disable_scroll;
document.getElementById("miframe").onmouseleave = enable_scroll;
Run Code Online (Sandbox Code Playgroud)

你可以使用document.body,但当你玩JSBin之类的时候会出现混乱,而且有六打(好的,三个,但仍然)documents和bodies.

在这里检查修改后的JSBIN .