我注意到在GWT的DOMStandardImpl.java中,通过在元素上设置onevent属性来引用事件调度程序,事件被沉没。例如,
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);
允许开发人员向元素添加多个事件侦听器吗?
感谢。 特洛伊
答案 0 :(得分:2)
GWT的DOMImpl
已被(至少在他们编写时)基准使用最快的选项,具体取决于浏览器;这就是为什么DOMImplStandard
使用事件处理程序属性(以及为什么DOMImplOpera
没有if chMask & 0x00001)
部分的原因,因为在那里分配onxxx
属性的速度非常快。)
至于与其他框架的潜在不兼容性:
wrap()
(也包括RootPanel.get(String)
)中的元素,但是如果事情不能很好地结合在一起,你就会负有责任。 addEventListener
(或IE的attachEvent
)。因此,如果您确实存在不兼容性/冲突,请首先责备自己(见上文),然后责怪两者 GWT和您的JS库。简而言之:这不是问题。