我对JSNI感到困惑。如何在Google Web工具包中使用JSNI

时间:2013-12-06 05:41:11

标签: gwt

我是新的Google网络工具包。我对JSNI感到困惑。为什么以及何时在Google Web工具包中使用JSNI.Advantage和JSNI.Thanks的限制。

2 个答案:

答案 0 :(得分:2)

当没有其他方法对Javascript以外的功能进行编码时,我使用本机Javascript代码。例如,GWT中没有XmlHttpRequest对象的包装器。我可以使用第三方解决方案(如果存在),或者根据网络上找到的基于javascript的示例代码编写我自己的类。所以,我有这个本机方法,我可以从我的纯Java代码调用,只包含Javascript代码。 JSNI允许我在这两个世界之间共享数据。

毕竟,在编译排列之后,Java和JS本机方法都构建到Javascript中。

如果您想使用各种Javascript库,那么JSNI将允许您调用包含在Java方法中的设计方法。例如,您可以将Modernizr.js脚本包含到您的html页面中,然后在您的类中包含类似的内容:

private native boolean isCSSAnimationSupported() /*-{
    return Modernizr.cssanimations;
}-*/;

当没有实际需要注入内联Javascript时,我不使用本机方法。

答案 1 :(得分:0)

除了alexp已提到的要点之外,还有另一种情况,即JSNI非常有用。

映像,你有几个GWT应用程序,如果你离开一个并启动另一个,你想要向起始GWT应用程序发送一些信息。

您有几种可能性:

  1. 您可以使用网址参数

  2. 您可以使用Cookie

  3. 或使用JSP和JSNI。

  4. 因此,您使用JSP而不是HTML作为主页。在这个JSP中,您可以使用隐藏字段的JSP标记来携带您的参数,使用JSNI,您可以从主页中读取参数。