我们有一个GWT网络应用程序,它也使用了Google jsapi和jquery。
在index.html中,我们已按以下方式加载Google jsapi:
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
但是,当客户端无法访问Google时,这似乎会暂停加载网页,直到超时为止。在某些国家,例如中国。
我已按如下方式更改了上述脚本元素,不太确定这是否正确:
<script type="text/javascript">
$.ajax({
url: 'https://www.google.com/jsapi',
dataType: 'script',
cache: true
});
</script>
并尝试阻止自己的客户端,因此无法访问www.google.com,但是,在加载页面时,它仍然等待加载jsapi。我查看了浏览器控制台的网络日志,有两个 Initiators ,如下所示
ajax @ jquery.min.js:127
(anonymous function) @ (index):18
原因,索引:18高于脚本元素。但是我不明白jquery.min.js:127,我在index.html中包含了本地的内容,如下所示
<script type="text/javascript" src="/js/jquery.min.js"></script>
这个jquery.min.js就像这个link一样是jQuery v1.4.2,但看起来在第127行没有google jsapi加载?
答案 0 :(得分:0)
查看GWT AjaxLoader。有了这个,你不必添加
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
到你的HTML。您可以在GWT Java代码中执行jsapi加载。例如,这将加载搜索模块:
AjaxLoaderOptions options = AjaxLoaderOptions.newInstance();
//add options if you want to
AjaxLoader.loadApi("search", "1", new Runnable() {
@Override
public void run() {
//do what you like
}
}, options);
使用这种方法我没有遇到任何加载延迟。