【发布时间】:2021-03-15 00:59:10
【问题描述】:
我看到有很多关于如何在浏览器中获取当前缩放系数的讨论,但我还没有发现为什么这个 sn-p 在 Firefox 中有效,而不是在 Chrome 中。
public class MyComposite extends Composite
{
public MyComposite()
{
HTMLPanel panel = new HTMLPanel("<applet>...</applet>");
panel.addDomHandler(new MouseWheelHandler()
{
@Override
public void onMouseWheel(MouseWheelEvent event)
{
event.stopPropagation();
event.preventDefault();
}
}, MouseWheelEvent.getType());
initWidget(panel);
}
}
在这两种浏览器中,当我在包含小程序的 div 内滚动时,滚动不会传播到父级(这很好)。当我在 div 之外滚动时,窗口也会滚动(这也很好)。
但是当我执行 Ctrl+MouseWheel 时,在 Firefox 中缩放事件被处理程序捕获并且不传播,而在 Chrome 中似乎没有调用处理程序,然后传播事件。我也想停止在 Chrome 中的传播。
Chrome 中是否存在错误或我做错了什么?
【问题讨论】:
-
Ctrl+MouseWheel 是否执行与 Ctrl+[+/-] 相同的功能? (我假设这是 Windows 行为...)
-
确实,它是缩放的默认快捷方式。 Ctrl+[+/-] 不应被处理程序捕获(事实并非如此)。
-
不是
Window.addResizeHandler()抓到了吗? -
它似乎被抓住了,但是我有另一个问题:
stopPropagation和preventDefault不能从 ResizeEvent 调用(参数来自 ResizeHandler 中的 onResize 方法)。此外,我不确定我是否想从整个窗口中阻止它。我宁愿只在鼠标光标位于相关 div 内时停止传播。
标签: javascript google-chrome gwt dom-events