有没有办法使用jQuery操纵GWT页面

时间:2016-02-16 22:40:13

标签: jquery ajax gwt

存在基于GWT的应用程序(没有源代码),并且需要操纵其日期选择器。 所以我想用jQuery来做这个,但问题是GWT在每个ajax调用之后改变了DOM模型,我不知道如何通知刷新使用jQuery来选择元素并做我的东西。

是否可以使用jQuery进行此项工作?有没有更好的解决方案来操作GWT页面的元素而不访问其源代码?

3 个答案:

答案 0 :(得分:0)

如果您正在寻找jQuery选择器的等价物($(" p")),GWT有专门用于它的DOM类,例如DOM.getElementById(" divID")选择具有给定id的元素。

Class提供了一组选择器,其中一些是: getChild(Element parent,int index), getInnerText(Element elem), sinkEvents(Element elem,int eventBits))

http://www.gwtproject.org/javadoc/latest/com/google/gwt/user/client/DOM.html

答案 1 :(得分:0)

  

如何获知刷新

您可以尝试挂钩DOM更改。看看MutationObserver。你可以找到一个类似的解决方案here

  

可以使用jQuery进行这项工作

嗯,你没有太多选择:)

  

操纵元素的更好解决方案

我不这么认为。

答案 2 :(得分:0)

你无法以确定的方式做到这一点。这是因为:

  • 编译后对GWT代码进行模糊处理,并在每次新发布后更改JS代码
  • 由于上面的
  • ,您无法在已编译的JS中访问函数/变量
  • 加载时间各不相同。因此,即使您尝试等待一段时间然后操纵DOM,您也可能会得到意想不到的结果。你不能依赖这种方法。

实现此目的的唯一方法是在GWT中公开回调函数:

public native void onDatePickerLoaded(DatePicker picker) {/*-{
    if ($wnd.onDatePickerLoadedCallback) {
        return $wnd.onDatePickerLoadedCallback(picker);
    }
}-*/;

然后你可以在你的HTML中附加jQuery +自定义回调函数。 我没有看到任何其他可能性。