如何使用 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: Exception caught: (ReferenceError) @com.onix.sdm.client.SDM_Mailer::createPicker()([]): google is not defined
从浏览器控制台:
> 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>
最佳答案
有很多变量都以包名作为前缀。不仅仅是新对象必须加上前缀,所有的变量也是如此,比如
var view = new $wnd.google.picker.DocsView($wnd.google.picker.ViewId.FOLDERS);
.enableFeature($wnd.google.picker.Feature.NAV_HIDDEN)
总的来说,这是一个很大的痛苦,没有行 #s 等,但这就是他们付钱给我的原因。
关于java - 如何从 GWT JSNI 创建新的 Javascript 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19191790/