Javascript 谷歌地图库加载会阻塞页面

Javascript 谷歌地图库加载会阻塞页面,javascript,google-maps,Javascript,Google Maps,我使用以下HTML标记加载Google Maps API: <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 但是,在浏览器加载脚本之前,它会阻止在HTML中加载它下面的所有内容 有没有办法使此加载成为非阻塞的?是的,您可以异步加载它。查看这部分文档: 这段代码提供了一个接受url和可选回调的延迟函数。 它异步加载脚本而不阻止页

我使用以下HTML标记加载Google Maps API:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>

但是,在浏览器加载脚本之前,它会阻止在HTML中加载它下面的所有内容


有没有办法使此加载成为非阻塞的?

是的,您可以异步加载它。查看这部分文档:

这段代码提供了一个接受url和可选回调的延迟函数。 它异步加载脚本而不阻止页面呈现。 我已经加入了一个保护,这样它就不会加载同一个scritp两次,所以你可以随意多次调用它

defer = (function () {
    var urls = [];

    return function (url, callback) {
        var inc;

        if (url && urls.indexOf(url) === -1) {
            inc = document.createElement('script');
            inc.async = true;
            inc.src = url;
            inc.onload = callback || function () {};
            document.getElementsByTagName('head')[0].appendChild(inc);
        }
    }
}());

defer('http://maps.google.com/maps/api/js?sensor=false');

这适用于异步加载时不会失败的任何外部javascript。

感谢这一伟大的技巧,但在这种情况下,我宁愿使用“官方”方式,这是同样的事情。我的只是给你一个函数,可以加载任意URL,而不是谷歌地图。@Munter有没有一些脚本异步加载失败的情况?我问这个问题是关于你回答中的最后一行。文档中的“异步”部分似乎已被删除。。。查看,源代码包含一个异步加载GoogleMaps库的示例