Загрузка библиотеки Google Maps блокирует страницу - PullRequest
5 голосов
/ 22 декабря 2011

Я использую следующий тег HTML для загрузки API Карт Google:

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

Однако он блокирует загрузку всего, что находится ниже, в HTML, пока скрипт не будет загружен браузером.

Есть ли способ сделать эту загрузку неблокируемой?

Ответы [ 2 ]

4 голосов
/ 22 декабря 2011

Этот код дает вам функцию отсрочки, которая принимает URL и необязательный обратный вызов.Он асинхронно загружает ваш скрипт, не блокируя отображение страницы.Я установил защиту, чтобы он не загружал один и тот же сценарий дважды, поэтому вы можете наивно вызывать его столько раз, сколько захотите.

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, которыйошибка при асинхронной загрузке.

3 голосов
/ 22 декабря 2011

Да, вы можете загрузить его асинхронно. Проверьте эту часть документов: http://code.google.com/apis/maps/documentation/javascript/basics.html#Async

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...