3

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

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

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

笔记:

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

4

1 回答 1

5

更简单的解决方案:

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

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

function enable_scroll()
{
    document.getElementById("bodyID").style.overflow="auto";
}

基本上,由于您不希望父页面滚动,而不是针对单个事件,只需在光标位于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;

您可以使用document.body,但是当您使用 JSBin 或类似的东西时会遇到混乱,并且有六个(好的,三个,但仍然)documentsbodies.

在这里检查修改后的 JSBIN 。

于 2013-11-14T16:53:09.253 回答