Недавно я столкнулся со следующей проблемой, когда лениво загружал / динамически загружал API-карты Google v3: Чтобы проверить, полностью ли загружен API-интерфейс, я следовал инструкциям на странице документации Google.Прекрасно работает с обычным именем обратного вызова функции, таким как & callback = initialize в глобальной области видимости.Также отлично работает с функцией обратного вызова, которая находится в определенном пространстве имен, например & callback = Namespace.initialize .
Теперь моя функция помещена в Namespace.foo [0] .initialize («Пространство имен» и «foo» относятся к типу object).Проблема в том, что я не могу правильно получить доступ к этой функции.Я попробовал несколько способов создания строки обратного вызова, каждый из которых приведен ниже с тем, что, по словам Firebug, не работает:
&callback=Namespace.foo[0].initialize
Firebug: NetworkError: 403 Forbidden - <http://maps.googleapis.com/maps/api/js?v=3...&callback=Namespace.foo[0].initialize...>
&callback=Namespace.foo.0.initialize
Firebug: missing ; before statement
Firebug: [Break On This Error] window.Namespace.foo[0].initialize()
&callback=Namespace.foo%5B0%5D.initialize
Firebug: NetworkError: 403 Forbidden - <http://maps.googleapis.com/maps/api/js?v=3...&callback=Namespace.foo[0].initialize...>
Я благодарен за каждую подсказку и / или решение!
Справочная информация: То, что я делаю, также может быть интересным.Скрипт динамически загружает HTML, CSS, данные и API карт Google на внешнюю веб-страницу (внутри веб-виджета).Теперь я использую отложенный объект jQuery для постановки в очередь различных включений, таких как сначала загрузка css / javascript / html, затем получение данных и, наконец, настройка карты Google в ранее загруженной структуре.Отложенный объект работает намного лучше, чем обработка различных шагов с помощью обратных вызовов (и намного проще!), Но когда метод jQuery.getScript выполнен (загружает API Google Maps), срабатывает событие успеха и возвращается deferred.resolve.Жаль, что это, вероятно, просто обрабатывает аутентификацию (через ключ клиента), а затем асинхронно загружает карты Google main.js.Это отстой, потому что мне нужно дождаться полной загрузки API ...