我们有一个使用Google jsapi和jquery的GWT web应用程序。
在index.html中,我们已经加载了Google jsapi,如下所示:
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
然而,这似乎会挂网页的加载,直到它的超时,当客户端无法访问谷歌。在一些国家,例如中国。
我已经改变了上面的脚本元素如下,不太确定这是正确的或不:
<script type="text/javascript">
$.ajax({
url: 'https://www.google.com/jsapi',
dataType: 'script',
cache: true
});
</script>
并尝试阻止自己的客户端,使其无法访问www.google.com,然而,当加载页面时,它仍然挂起加载jsapi。我检查了浏览器控制台的网络日志,有两个启动器如下
ajax @ jquery.min.js:127
(anonymous function) @ (index):18
显然,index:18在script元素上面。但是我不明白关于jquery.min.js:127,我从本地包含在index.html中,如下所示
<script type="text/javascript" src="/js/jquery.min.js"></script>
这个jQuery .min.js是jQuery v1.4.2作为这个链接,但它看起来没有谷歌jsapi加载在127行?
看一下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);
使用这种方法加载时没有遇到任何延迟