Events GWT中的下沉事件——与其他JS框架的兼容性
我注意到,在GWT的DOMStandardImpl.java中,事件是通过在元素上设置onevent属性以引用事件调度器而沉没的。e、 gEvents 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
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
属性非常快)
至于与其他框架的潜在不兼容性:
wrap()
元素(还包括RootPanel.get(String)
)可能仍然存在问题,但是,如果不能很好地配合,您需要承担责任addEventListener
(或者IE的attachEvent
),那么在GWT中使用事件处理程序属性将不会成为问题。因此,如果您确实存在不兼容/冲突,首先要怪自己(见上文),然后再怪GWT和JS库简而言之:这不是问题。我希望在一些定制的、更复杂的GWT小部件中使用第三方JS库的一些UI组件,这样我就不必自己编写它们了。假设没有兼容性问题,您仍然认为这是不可取的吗?谢谢。假设没有兼容性问题,那就继续吧!谷歌集团利用闭包库的丰富编辑器,谷歌航班利用谷歌地图API。您可能最好不要混合使用事件处理程序(对于同一个事件,在GWT和第三方JS中都处理),但正如我所说的,它几乎没有失败的理由(除非第三方JS也在xxx上使用
onxxx
,然后您可以简单地使用两个元素,而不是在同一个元素上同时侦听GWT和JS)