- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 <li>
内的 anchor 元素上接收一个事件和 <li>
上的听众只是工作正常,但它不适用于任何其他元素的 anchor 。它正在处理的奇怪事情 FireFox
只有
html 输出是这样的:
<li>
Some Text
</li>
<li>
Some Text<a class='myClass'>Anchor</a>
</li>
监听器的JAVA代码
this.eventListener = new EventListener() {
@Override
public void onBrowserEvent(Event e) {
Element elem = e.getTarget();
//This means we want to use the option selection
switch (e.getTypeInt()) {
case Event.ONCLICK:
if (LIElement.is(elem) && !elem.hasClassName('myClass')) {
selectOption((LIElement) elem);
} else {
LIElement li = (LIElement) elem.getParentElement();
createContact(li);
}
break;
case Event.ONMOUSEOVER:
//do something
break;
case Event.ONMOUSEOUT:
//do something
break;
}
}//End of onBrowserEvent
};//End of event listener
我正在使用它来创建元素:
LIElement li = Document.get().createLIElement();
AnchorElement createContactLI = Document.get().createAnchorElement();
createContactLI.addClassName(NEW_CONTACT_CLASS);
createContactLI.setInnerText("Add new contact");
createContactLI.setId("myID");
li.appendChild(createContactLI);
ulPanel.appendChild(li);
下沉事件:
Event.sinkEvents(ulPanel, Event.ONCLICK | Event.ONMOUSEOVER | Event.ONMOUSEOUT);
Event.setEventListener(ulPanel, this.eventListener);`
我尝试过的
我要做什么 - 将整个功能编写为小部件,这将花费我很长时间
非常感谢您的帮助
最佳答案
不要使用 com.google.gwt.user.client.Element
,而是使用 com.google.gwt.dom.client.Element
。我不知道您要将 ulPanel
添加到哪里。但以下代码有效:
import com.google.gwt.dom.client.AnchorElement;
import com.google.gwt.dom.client.DivElement;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.EventTarget;
import com.google.gwt.dom.client.LIElement;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.EventListener;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.VerticalPanel;
public class CustomWidget extends VerticalPanel{
public CustomWidget() {
DivElement ulPanel = Document.get().createDivElement();
LIElement li = Document.get().createLIElement();
AnchorElement createContactLI = Document.get().createAnchorElement();
createContactLI.addClassName("myclass");
createContactLI.setInnerText("Add new contact");
createContactLI.setId("myID");
li.appendChild(createContactLI);
ulPanel.appendChild(li);
Event.sinkEvents(ulPanel, Event.ONCLICK | Event.ONMOUSEOVER | Event.ONMOUSEOUT);
Event.setEventListener(ulPanel, this.eventListener);
this.getElement().appendChild(ulPanel);
}
EventListener eventListener = new EventListener() {
@Override
public void onBrowserEvent(Event e) {
//This means we want to use the option selection
switch (e.getTypeInt()) {
case Event.ONCLICK:
EventTarget eventTarget = e.getEventTarget();
Element elem = Element.as(eventTarget);
if (AnchorElement.is(elem) && "myclass".equals(elem.getAttribute("class"))) {
Window.alert("clicked anchor element");
} else {
LIElement li = (LIElement) elem.getParentElement();
Window.alert("clicked li element");
}
break;
case Event.ONMOUSEOVER:
//do something
break;
case Event.ONMOUSEOUT:
//do something
break;
}
}//End of onBrowserEvent
};//End of event listener
}
关于java - GWT SinkEvent 在 Firefox 上除外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25634257/
我有一个简单的 GWT 测试设置: 添加了处理程序: container.addDomHandler(new ClickHandler() { @Override pub
我正在使用 GWT。我通过添加 EventHandlers 开始向我的小部件添加事件。 事件处理程序示例代码: widget.addClickHandler(new ClickHandler(
我遇到了一个问题,我接收了两个事件 ONMOUSEOVER 和 ONCLICK。我的问题是 ONMOUSEOVER 被调用,但 ONCLICK 根本没有被触发!! 这是我的代码示例 LIElement
我正在尝试在 内的 anchor 元素上接收一个事件和 上的听众只是工作正常,但它不适用于任何其他元素的 anchor 。它正在处理的奇怪事情 FireFox只有 html 输出是这样的:
我是一名优秀的程序员,十分优秀!