Javascript 谷歌地图库加载会阻塞页面
我使用以下HTML标记加载Google Maps API: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和可选回调的延迟函数。 它异步加载脚本而不阻止页
<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库的示例