首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GWT JSNI返回js-函数。

GWT JSNI返回js-函数。
EN

Stack Overflow用户
提问于 2013-02-05 16:20:11
回答 2查看 2.1K关注 0票数 4

如何从GWT中的JSNI返回JavaScript函数?我尝试了以下方法:

代码语言:javascript
复制
/* JSNI method returning a js-function */
public static native JavaScriptObject native_getFunction() /*-{
    return function(a,b){
        //do some stuff with a,b
    }
}-*/;

将函数存储在变量中

代码语言:javascript
复制
/* outside from GWT: store the function in a variable */
JavaScriptObject myFunction = native_getFunction();

之后使用该函数将产生以下错误消息:

代码语言:javascript
复制
(TypeError): object is not a function

有人知道如何解决这个问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-05 18:38:01

这对我有用。宣布下列方法:

代码语言:javascript
复制
public static native JavaScriptObject native_getFunction() /*-{
    return function(a,b){
        //do some stuff with a,b
    }
}-*/;

private native void invoke(JavaScriptObject func)/*-{
    func("a", "b");
}-*/;

然后,您可以这样使用这些方法:

代码语言:javascript
复制
JavaScriptObject func = native_getFunction();
invoke(func);
票数 6
EN

Stack Overflow用户

发布于 2013-02-05 19:01:43

让我们考虑一下appName.nochache.js(GWT) in Homepage.html

homepage.html

代码语言:javascript
复制
<script>
    function printMyName(name) {
        alert("Hello from JavaScript, " + name);
    }
    </script>

在你们的Gwt中:

在Gwt源代码中,可以通过JSNI访问sayHello() JS函数:

代码语言:javascript
复制
native void printMyNameInGwt(String name) /*-{
  $wnd.printMyName(name); // $wnd is a JSNI synonym for 'window'
}-*/;

您也可以将它们赋值给变量。

代码语言:javascript
复制
native void printMyNameInGwt(String name) /*-{
  var myname =$wnd.printMyName(name); // return that for your purposes
}-*/;

注意:如果您正在调用任何外部文件的js方法,则应该在您的html页面上添加带有<script>标记的.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14712014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档