首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSNI包装器对象

JSNI包装器对象
EN

Stack Overflow用户
提问于 2013-06-05 14:02:40
回答 1查看 288关注 0票数 0

以下是访问JS方法的常用方法:

代码语言:javascript
复制
public class JSNIHelper {
    public static native void errorNotify(String _title, String _text) /*-{
        $wnd.$.pnotify({
                                        title: _title,
                                        text: _text,
                                        type: 'error'
                                })
        }-*/; 
}

然而,在JSNI之上是否有一个“对象包装器”,以便以更像Java对象的方式访问Javascript:

代码语言:javascript
复制
JSNIWrapper().call("$").method("pnotify")
.set("title", title)
.set("text", text)
.set("type", type).now();

我不完全确定什么是最好的实现,我不是JS专家。所以我的问题是,是否存在任何现有的JSNI对象包装器?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-05 18:35:56

gwtquery是GWT的一个很好的补充,它有大量的助手,可以在不编写jsni的情况下方便地与javascript进行交互。

在您的示例中,您的代码可能类似于:

代码语言:javascript
复制
// Create a JSO and set the properties
Properties p =  Properties.create();
p.set("title", title);
p.set("text", text);
p.set("type", type);

// Get the JSO which has the function we want to call
JavaScriptObject $ = JsUtils.prop(window, "$");

// Call the JS method and get the result (null if the native
// js function returns void
Object ret = JsUtils.runJavascriptFunction($, "pnotify", p);

顺便说一句,您提出的链接语法非常有意义,所以您可以建议将此功能作为对gquery Properties对象的增强。类似于:

代码语言:javascript
复制
$$().set("title", title).set("text", text).set("type", type).call(window, "$.pnotify");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16932612

复制
相关文章

相似问题

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