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

How to avoid the loading of Google jsapi blocks the web page loading

本文关键字:加载 网页 Google 何避免 jsapi      更新时间:2023-09-26

我们有一个使用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);

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