【问题标题】:goog.event.listen resize event not received from jquerygoogle.event.listener 未从 jquery 接收到调整大小事件
【发布时间】:2014-05-22 15:54:28
【问题描述】:

我使用一个 JS 库 (GoXTK.com)。如果需要,它使用goog.event.listen 来调整画布的大小:

goog.events.listen(window, goog.events.EventType.RESIZE, this.onResize_,
      false, this);

如果我用鼠标修改窗口大小,效果会很好。

但是,有时我只想触发此回调而不实际调整窗口大小。为此,我想使用 jQuery:

$(window).resize();

在这种情况下,goog 回调不会再次触发。

任何帮助将不胜感激。

谢谢

【问题讨论】:

    标签: jquery dom-events window-resize google-closure


    【解决方案1】:

    尝试调度事件:

    var ev = document.createEvent('Event');
    ev.initEvent('resize', true, true);
    window.dispatchEvent(ev);
    

    【讨论】:

    • 效果很好。你能详细介绍一下吗?出了什么问题,为什么这个有效?谢谢
    • @Nicolas 使用 $(window).resize(); 您试图触发 jQuery 处理程序。您正在使用的这个插件(我不知道)似乎使用 javscript 本机方法 addEventListener 附加事件。然后要触发这个处理程序,你需要调度事件developer.mozilla.org/en-US/docs/Web/API/…
    • @A-wolf 好的,有道理,谢谢,我认为 jQuery 也会调度它。
    【解决方案2】:

    您也可以使用goog.events 包来调度事件:

    http://docs.closure-library.googlecode.com/git/local_closure_goog_events_events.js.source.html#line786

    这个特定的场景是在这个论坛上提出的:

    https://groups.google.com/forum/#!topic/closure-library-discuss/cEtEsx_M42o

    如果您通读它,您会看到 goog.events.dispatchEvent 需要一个 EventTarget 对象,因此您需要扩展 Window dom 对象:

    var googWin = window;
        goog.inherits(googWin, goog.events.EventTarget);
        goog.events.dispatchEvent(window, goog.events.EventType.RESIZE);
    

    (请注意,我只是从论坛回复中提取该解决方案,因此我没有亲自验证它是否有效)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-04
      • 2019-02-01
      • 2013-12-13
      • 1970-01-01
      • 2018-10-01
      • 2012-04-23
      • 1970-01-01
      相关资源
      最近更新 更多