Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Events GWT中的下沉事件——与其他JS框架的兼容性_Events_Gwt_Onclick_Compatibility_Addeventlistener - Fatal编程技术网

Events GWT中的下沉事件——与其他JS框架的兼容性

Events GWT中的下沉事件——与其他JS框架的兼容性,events,gwt,onclick,compatibility,addeventlistener,Events,Gwt,Onclick,Compatibility,Addeventlistener,我注意到,在GWT的DOMStandardImpl.java中,事件是通过在元素上设置onevent属性以引用事件调度器而沉没的。e、 g protected native void sinkEventsImpl(Element elem, int bits) /*-{ ... if (chMask & 0x00001) elem.onclick = (bits & 0x00001) ? @com.google.gwt.user.client.impl

我注意到,在GWT的DOMStandardImpl.java中,事件是通过在元素上设置onevent属性以引用事件调度器而沉没的。e、 g

protected native void sinkEventsImpl(Element elem, int bits) /*-{
...
if (chMask & 0x00001) elem.onclick       = (bits & 0x00001) ?
        @com.google.gwt.user.client.impl.DOMImplStandard::dispatchEvent : null;
...
}-*/;
问题是,这可能是与现有JavaScript代码和其他JS框架不兼容的根源。为什么他们使用elem.onevent=func方法而不是首选方法

elem.addEventListener('event',func,false);
这将允许开发人员向元素添加多个事件侦听器

谢谢。
特洛伊

GWT的
dominpl
已经(至少在编写时)进行了基准测试,以根据浏览器使用最快的选项;这就是为什么
dominmplstandard
使用事件处理程序属性(为什么没有
if-chMask&0x00001)
部分,因为在那里分配
onxxx
属性非常快)

至于与其他框架的潜在不兼容性:

  • GWT是围绕着它拥有它所创建的元素这一理念构建的,因此如果你有第三方JS库把它搞砸了,那是你的错(因为你试图同时使用这两个库)
  • 小部件中的
    wrap()
    元素(还包括
    RootPanel.get(String)
    )可能仍然存在问题,但是,如果不能很好地配合,您需要承担责任
  • 更重要的是,如果其他JS库不使用事件处理程序属性,并且isntead使用
    addEventListener
    (或者IE的
    attachEvent
    ),那么在GWT中使用事件处理程序属性将不会成为问题。因此,如果您确实存在不兼容/冲突,首先要怪自己(见上文),然后再怪GWT和JS库

  • 简而言之:这不是问题。

    我希望在一些定制的、更复杂的GWT小部件中使用第三方JS库的一些UI组件,这样我就不必自己编写它们了。假设没有兼容性问题,您仍然认为这是不可取的吗?谢谢。假设没有兼容性问题,那就继续吧!谷歌集团利用闭包库的丰富编辑器,谷歌航班利用谷歌地图API。您可能最好不要混合使用事件处理程序(对于同一个事件,在GWT和第三方JS中都处理),但正如我所说的,它几乎没有失败的理由(除非第三方JS也在xxx上使用
    onxxx
    ,然后您可以简单地使用两个元素,而不是在同一个元素上同时侦听GWT和JS)