【问题标题】:How to catch Zoom event with GWT and Chrome如何使用 GWT 和 Chrome 捕捉 Zoom 事件
【发布时间】: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()抓到了吗?
  • 它似乎被抓住了,但是我有另一个问题:stopPropagationpreventDefault 不能从 ResizeEvent 调用(参数来自 ResizeHandler 中的 onResize 方法)。此外,我不确定我是否想从整个窗口中阻止它。我宁愿只在鼠标光标位于相关 div 内时停止传播。

标签: javascript google-chrome gwt dom-events


【解决方案1】:

迟到的提示:这似乎是 Chrome 中的一个错误。几年前我提交了a report,但这似乎不是他们的优先事项。如果你偶然发现这篇文章并且你也想要那个“功能”,请在那个报告上留言,也许它会加快速度......

【讨论】:

    猜你喜欢
    • 2019-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 1970-01-01
    • 2018-10-13
    • 2019-03-01
    相关资源
    最近更新 更多