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

Posted

技术标签:

【中文标题】在Firefox中禁用主窗口滚动onmouseenter iframe【英文标题】:Disabling main window scrolling onmouseenter iframe in firefox 【发布时间】:2013-11-27 18:18:10 【问题描述】:

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

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

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

注意:

滚动启用/禁用基于代码here

【问题讨论】:

【参考方案1】:

更简单的解决方案:

给你的父 body 一个 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 here。

【讨论】:

不错!没想到!我总是会选择更简单的解决方案。不过,我很想知道为什么其他解决方案在 ff 中不起作用。 说实话,我也是。我自己也有点好奇。

以上是关于在Firefox中禁用主窗口滚动onmouseenter iframe的主要内容,如果未能解决你的问题,请参考以下文章

在 Firefox 插件弹出窗口中禁用任何对象的拖动

如何修复 Firefox 扩展弹出窗口中显示的滚动条

在 Firefox 29 扩展中禁用 beforeunload 对话

使用 JavaScript 如何禁用右键单击或单击滚动条时如何在右键单击窗口中删除检查元素选项

Bootstrap:如何禁用垂直滚动条?

QT中如何给主窗口添加滚动条