Браузер Android не загружает Google Maps API при перезагрузке страницы - PullRequest
0 голосов
/ 24 февраля 2012

Я загружаю API Карт Google динамически, используя эту функцию:

App.prototype.loadScript = function(src) {
  $(document.createElement("script")).attr({
    type: "text/javascript",
    src: src
  }).appendTo("body");
};

Я передаю этот URL в качестве аргумента:

"//maps.googleapis.com/maps/api/js?v=3.8&sensor=false&language=" + locale + "&callback=window.app.googleMapsCallback"

Работает нормально при первой загрузке страницы и срабатывает обратный вызов. Однако, когда я перезагружаю страницу на Android, window.app.googleMapsCallback вызывает , а не . Он отлично работает в Chrome и в браузере iOS.

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

Как я могу убедиться, что обратный вызов всегда срабатывает?

ОБНОВЛЕНИЕ:

При дальнейшем тестировании очистка кеша и перезагрузка тоже не работают. Я должен очистить все данные браузера (через Настройки -> Приложения -> Управление приложениями), чтобы перезагрузить страницу успешно.

Использование функции верхнего уровня в качестве обратного вызова не имеет значения.

Нет ошибок JavaScript при перезагрузке.

Следует отметить, что я использую HTC Evo 4G с Android 2.3.4, а мое приложение построено на jQuery Mobile.

1 Ответ

1 голос
/ 27 февраля 2012

Я пытался воспроизвести вашу проблему с помощью эмулятора Android (обе версии 2.3.3 и 2.3.5. Нет версии 2.3.4, извините), но я не смог. Обратный вызов работает нормально при каждой перезагрузке страницы.

Это тест jsfiddle: http://jsfiddle.net/MartinodF/gbAuL/. Он включает в себя только минимальный код для проверки вашей проблемы и исключение его зависит от чего-то еще в вашей кодовой базе.

Не могли бы вы попробовать это на вашем телефоне? Нажмите «Отладка на мобильном устройстве» (кнопка справа от «Выполнить» на верхней панели) в jsfiddle и откройте URL-адрес, который он вам дает (например, http://jsfiddle.net/m/ABC) в браузере Android. всплывающее окно «Обратный вызов вызван». Попробуйте перезагрузить страницу и посмотрите, работает ли она.

Если этого не произойдет, то я могу попробовать получить устройство со скином HTC Sense 2.3.4 для дальнейшего тестирования.

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