如何避免加载Google jsapi阻止网页加载

时间:2016-08-28 15:32:33

标签: javascript jquery html gwt google-api

我们有一个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加载?

1 个答案:

答案 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);

使用这种方法我没有遇到任何加载延迟。