作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图在我的 GWT 应用程序中使用 Google 的 javascript API(以使用 google 可视化),但在我的 JSNI 中引用 google 对象时遇到了问题。我收到一个 javascript 错误:“google is not defined”。
我知道有一个用于此的 GWT 包装器 API,但它没有我需要的功能。我遵循了这里的所有建议:use visualization api of google in GWT但我仍然收到此错误。
我已将此行添加到我的 gwt.xml 文件中:
<script src="https://www.google.com/jsapi"></script>
我不确定把它放在哪里,所以我把它加在我的主标签下面。另一个堆栈问题说要添加它以将其添加到我的 HTML 中,所以我假设这就是他们的意思。
这是我调用的精简 native 方法,它会产生“google is not defined”错误:
public static native void nativeJavaScriptFunction() /*-{
google.load('visualization', '1.0', {
'packages' : [ 'corechart' ]
});
}-*/;
我还尝试将 google 引用为“$wnd.google”和“$doc.google”。我使用的是最新版本的 GWT 2.5.1。是否还有其他人在 JSNI 方法中使用和引用了任何 javascript api?
最佳答案
您可以使用 ScriptInjector,而不是在您的主机页面中添加该脚本标记,如下所示:
ScriptInjector
.fromUrl("http://api.elsevier.com/javascript/scopussearch.jsp")
.setCallback(new Callback<Void, Exception> () {
@Override
public void onFailure(Exception reason) {
throw new UnsupportedOperationException("FAILURE to inject Scopus API !!!");
}
@Override
public void onSuccess(Void result) {
System.out.println("Elsevier scopus search API successfully injected...");
}
}).setWindow(ScriptInjector.TOP_WINDOW).inject();
那么您应该能够通过 JSNI 成功使用注入(inject)的 API。
关于java - 在 GWT 应用程序中加载 Google jsapi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18596222/
我是一名优秀的程序员,十分优秀!