Tôi đang viết một ứng dụng GWT liên quan đến việc tương tác với một tài liệu bên ngoài trong khung nội tuyến. Như một bằng chứng về khái niệm, tôi đang cố gắng đính kèm một trình xử lý nhấp chuột vào một nút.Gắn một sự kiện GWT vào một phần tử trong khung nội tuyến ngoài
Các tác phẩm sau đây trong 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!");
};
Đang cố gắng để làm tương đương trong GWT, tôi đã làm như sau:
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;
}-*/;
Sau đây là lớp ElementWrapper:
public class ElementWrapper extends Widget implements HasClickHandlers {
public ElementWrapper(Element theElement) {
setElement(theElement);
}
public HandlerRegistration addClickHandler(ClickHandler handler) {
return addDomHandler(handler, ClickEvent.getType());
}
}
Mã để tìm nút hoạt động tốt nhưng trình xử lý sự kiện nhấp chuột thực tế không được gọi. Có ai đã có một vấn đề tương tự trước đây, và làm thế nào bạn giải quyết nó?
Cảm ơn trước,
Tín
Cảm ơn bạn! Tôi biết phải có một cách sạch hơn :) – triggerNZ