如何实现CSS3 GWT过渡端监听器



我想使用transitionend Mozilla CSS3属性在CSS3转换完成时触发事件。我知道我可以使用计时器来实现类似的功能,但基于CSS3动画的精神,让我们把它交给浏览器。下面是该事件的一个实际示例。

问题:在DOM.setEventListener支持的事件类型中,GWT 2.4不支持此事件。我试着使用:

DOM.sinkBitlessEvent(element, "transitionend");

但是使用调试器发现它只支持(通过重新绑定):

  • dragenter
  • dragexit
  • dragover
  • drop

因此,缺少编写本机事件处理程序JSNI代码(这会使我面临内存泄漏),如何侦听GWT中不支持的元素上的事件呢?

作为参考,下面是GWT 2.3在DomImplStandard.java中为gecko_1.8排列构建的内容:

  protected native void sinkBitlessEventImpl(Element elem, String eventTypeName) /*-{
   if (eventTypeName == "dragenter")
      elem.ondragenter = @com.google.gwt.user.client.impl.DOMImplStandard::dispatchEvent;
    if (eventTypeName == "dragexit")
      elem.ondragexit  = @com.google.gwt.user.client.impl.DOMImplStandard::dispatchEvent;
    if (eventTypeName == "dragover")
      elem.ondragover  = @com.google.gwt.user.client.impl.DOMImplStandard::dispatchEvent;
    if (eventTypeName == "drop")
      elem.ondrop      = @com.google.gwt.user.client.impl.DOMImplStandard::dispatchEvent;
  }-*/

mgwt似乎管理转换事件(以及其他事件)。他们用自己的版本替换了com.google.gwt.user.client.impl.DOMImpl。参见模块描述符。但是看看他们的DOMImpl(例如。DOMImplMobileSafari),他们编写一个本地事件处理程序:

//transistion end
if (chMask & 0x8000000) {
    if(bits & 0x8000000){
        elem.addEventListener('webkitTransitionEnd', @com.google.gwt.user.client.impl.DOMImplStandard::dispatchEvent, false);
    }
}

我不明白他们是如何管理内存泄漏的

相关内容

  • 没有找到相关文章

最新更新