我正在編寫一個涉及與iframe中的外部文檔進行交互的GWT應用程序。作爲一個概念證明,我試圖將一個點擊處理程序附加到一個按鈕上。將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());
}
}
找到按鈕的代碼工作正常,但實際的點擊事件處理程序沒有被調用。有沒有人有類似的問題,你是如何解決它?
由於提前,
田
謝謝!我知道必須有一個更清潔的方式:) – triggerNZ 2009-12-01 01:55:44