【发布时间】:2015-11-16 20:52:42
【问题描述】:
...不限制 iframe 内的滚动或需要专门命名/标记所有可滚动元素。
想象一下嵌入在父页面中的谷歌地图小部件。当您放大小部件时,显然您不希望父页面滚动。
我认为我的previous question 的答案解决了这个问题:
在 iframe 内滚动时,body 不知道任何关于 那里发生了什么。但是当 iframe 滚动条到达底部或 顶部,它将滚动传递给正文。
取消从 iframe 传播的事件。
但该解决方案在 Firefox 中不起作用,因为 Firefox 不会 - by design - 将 iframe 捕获的事件传播到父页面,但奇怪的是它会滚动父页面。见jsfiddle here。
$('body').bind('mousewheel DOMMouseScroll', onWheel);
function onWheel (e){
if (e.target === iframe)
e.preventDefault();
console.log(e);
}
那么,当用户在 Firefox 中放大嵌入式 iframe 中的内容时,如何防止页面滚动?
【问题讨论】:
-
因为 Firefox 使用 DOMMouseScroll 事件,我会尝试将 $('body') 更改为 $(document),也许它可以工作,但我不确定。值得一试
-
@GOSCHEN 这不是问题,“Firefox 不会 - 按照设计 - 将 iframe 捕获的事件传播到父页面”
-
如果您仍然可以捕获滚动事件(在父页面上),也许您可以根据 iframe 位置检查鼠标位置:如果鼠标在内部,则取消滚动
标签: javascript firefox iframe jquery-events mousewheel