【发布时间】:2010-11-11 13:34:27
【问题描述】:
我正在编写一个 GWT 应用程序,该应用程序涉及与 iframe 中的外部文档进行交互。作为概念证明,我正在尝试将点击处理程序附加到按钮。
以下工作在 javascript 中
var iframe = document.getElementById("rawJSIFrame");
var doc = iframe.contentDocument;
var body = doc.body;
var button = doc.getElementsByTagName("input").namedItem("submit");
button.onclick = function() {
alert("Clicked!");
};
尝试在 GWT 中做同样的事情,我做了以下事情:
public void addClickHandlerToSubmitButton(String buttonElementName, ClickHandler clickHandler) {
IFrameElement iframe = IFrameElement.as(frame.getElement());
Document frameDocument = getIFrameDocument(iframe);
if (frameDocument != null) {
Element buttonElement = finder(frameDocument).tag("input").name(buttonElementName).findOne();
ElementWrapper wrapper = new ElementWrapper(buttonElement);
HandlerRegistration handlerRegistration = wrapper.addClickHandler(clickHandler);
}
}
private native Document getIFrameDocument(IFrameElement iframe)/*-{
return iframe.contentDocument;
}-*/;
以下是ElementWrapper类:
public class ElementWrapper extends Widget implements HasClickHandlers {
public ElementWrapper(Element theElement) {
setElement(theElement);
}
public HandlerRegistration addClickHandler(ClickHandler handler) {
return addDomHandler(handler, ClickEvent.getType());
}
}
查找按钮的代码工作正常,但实际的单击事件处理程序没有被调用。以前有没有人遇到过类似的问题,您是如何解决的?
提前致谢,
锡
【问题讨论】:
标签: java javascript dom gwt event-handling