4

我在 Javascript 中有一个变量,它分别在全屏模式打开和关闭true之间切换。false现在我想在我的GWT代码中访问该变量,并相应地执行一些操作。谁能告诉我该怎么做?我无法从有关JSNI...的 Google 文档中理解它

4

2 回答 2

7

在 JavaScript 中

var mybool = true;

MyClass 类中的JSNI方法;

public static native boolean getNativeVariableType(String jsVar)/*-{
        return  eval('$wnd.' + jsVar);
    }-*/;

最后在 GWT 中使用;

boolean getFormJs = Myclass.getNativeVariableType("mybool");

正如@dodoot 提出的那样,您可以尝试这样做return !!$wnd[jsVar]以获得摆脱eval功能的副作用。

正如@manolo 所说,如果您使用的是gwtQuery,只需编写简单的$(window).prop("mybool").

于 2013-01-28T14:17:05.897 回答
7

出于好奇,对于像这样的简单事情,您可以通过利用 gwt 覆盖类中已经存在的某些 jsni 方法来避免编写 jsni 方法。

因此,在您的情况下,您可以获取 window 对象,并将其转换为元素,使用类中的 getter 读取其属性Element

Element $wnd = (Element)Document.get().<Element>cast().getPropertyObject("defaultView");
boolean mybool = $wnd.getPropertyBoolean("mybool");

将gwtquery库添加到你的项目中,代码就简单多了:

boolean mybool = $(window).prop("mybool");
于 2013-03-01T12:57:51.390 回答