私は、iframe内の外部ドキュメントとやりとりするGWTアプリケーションを作成しています。コンセプトの証明として、ボタンにクリックハンドラをアタッチしようとしています。外部iFrameの要素にGWTイベントをフックする
ジャバスクリプト
GWTで同等のものをやろうとし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!");
};
で、次の作品、私は次のようでした:
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