1

如何使用 JSNI 从 GWT 创建一个新的 Javascript 对象?它没有在文档中列出。当我将所有 JS 移动到 .html 文件时它可以工作(但会导致另一个不相关的问题)。

Java 代码:

private static native void createPicker() /*-{
    var picker = new $wnd.google.picker.PickerBuilder()
        .enableFeature(google.picker.Feature.NAV_HIDDEN)
        ....

错误:

com.google.gwt.event.shared.UmbrellaException: 异常捕获: (ReferenceError) @com.onix.sdm.client.SDM_Mailer::createPicker()([]): google 未定义

从浏览器控制台:

> google
  >Object {picker: Object}

参考:

http://www.gwtproject.org/doc/latest/DevGuideCodingBasicsJSNI.html

HTML:

<script type="text/javascript">
    function loadPicker() {
      gapi.load('picker');
    }
</script>
<script type="text/javascript" src="https://apis.google.com/js/api.js?onload=loadPicker"></script>
4

1 回答 1

2

有很多很多以包名称为前缀的变量。不仅是新对象必须加上前缀,所有变量也一样,比如

var view = new $wnd.google.picker.DocsView($wnd.google.picker.ViewId.FOLDERS);

.enableFeature($wnd.google.picker.Feature.NAV_HIDDEN)

总的来说是一个很大的痛苦,没有线#s等,但这就是他们付钱给我的原因。

于 2013-10-04T23:33:47.957 回答