我是新的谷歌网页工具包,我对JSNI.Why和何时在谷歌网页toolkit.Advantage中使用JSNI感到困惑,以及JSNI.Thanks的提前限制。
发布于 2013-12-06 15:42:15
当除了Javascript之外没有其他方法编码特性时,我使用原生Javascript代码。例如,GWT中没有XmlHttpRequest对象的包装器。我可以使用任何一种第三方解决方案(如果存在的话),或者基于web上到处都可以找到的基于javascript的示例代码来编写我自己的类。因此,我有一个本机方法,我可以从我的纯Java代码中调用它,并且它只包含Javascript代码。JSNI允许我在这两个世界之间共享数据。
毕竟,在编译排列之后,Java和JS本机方法都被构建到Javascript中。
如果您想使用各种Javascript库,那么JSNI将允许您按照设计调用包装在Java方法中的方法。同样,例如,您可以将Modernizr.js脚本包含到html页面中,然后在您的类中包含类似以下内容:
private native boolean isCSSAnimationSupported() /*-{
return Modernizr.cssanimations;
}-*/;当没有实际需要注入内联Javascript时,我不使用本机方法。
发布于 2013-12-06 17:15:51
除了已经提到的alexp的要点,还有另一种情况,JSNI是一个非常有用的。
在映像中,您有几个GWT应用程序,如果您离开一个应用程序并启动另一个应用程序,您需要向启动的GWT应用程序发送一些信息。
您有几种方法可以做到这一点:
因此,您使用JSP而不是HTML作为主页。在这个JSP中,您可以使用隐藏字段的JSP标记来携带参数,并且可以使用JSNI从主页中读取参数。
https://stackoverflow.com/questions/20416830
复制相似问题