Подтвердить что ты не робот

"Google не определен" при использовании Google Maps V3 в Firefox удаленно

Здесь моя головоломка: У меня есть страница, использующая Google Maps V3 и jQuery. Все это хорошо работало в FF5, Chrome и Safari.

Как только я загрузился на веб-сайт, я получаю ошибку "google не определен" в первой строке, которую я пытаюсь использовать объект google

var defaultLocation = new google.maps.LatLng(lat, lng);

Он встречается только в FF, а происходит только удаленно (т.е. если я загружаю файл в FF локально, он работает хорошо). Chrome и Safari, похоже, отлично работают, как и мои браузеры для Android и iPod.

Вот что я пробовал до сих пор:

  • Перемещено <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> в начало раздела <head>.
  • Переместил весь контент $(function() {...}); в функцию с именем initialize() и добавил <body onload="initialize()">
  • Выполняется с помощью скриптов и файлов css.
  • Вставить URL http://maps.google.com/maps/api/js?sensor=false в поле адреса FF и проверить, что я получаю законный script

Но так как это происходит только в FF на удаленной машине и хорошо работает в противном случае, я не думаю, что это имеет какое-то отношение к моему коду. Возможно, порядок загрузки в FF5 завинчен. Возможно, он приоритезирует сетевые ресурсы по-другому, чем другие браузеры. Я действительно не знаю, что с этим делать в этот момент.

Любая помощь приветствуется. Гай

Update:
Просто хотел добавить следующий факт: после попытки предыдущего на Mac я попробовал FF5 в Windows и воспроизвел то же самое поведение.
Для хорошей меры я тоже попробовал Pale Moon - те же результаты. Chrome 14, Opera 11.50 и даже frickin 'IE9 (который не был включен в план тестирования). Это просто FF5, теперь как на Mac, так и на Windows 7, который не работает на этой странице.

4b9b3361

Ответ 1

Я столкнулся с "Google не определен" несколько раз. Вероятно, у Google Script есть некоторая проблема, которая не должна быть хорошо загружена с помощью FF-addon КСТАТИ. FF имеет параметр перезагрузки (например, перезагрузка окна) Справкa > перезагрузка с отключенными надстройками

Ответ 2

У меня была такая же ошибка: "Google не определен" при использовании Gmap3. Проблема заключалась в том, что я включил "gmap3", прежде чем включать "google", поэтому я отменил порядок:

<script src="https://maps.googleapis.com/maps/api/js?sensor=false" type="text/javascript"></script>
<script src="/assets/gmap3.js?body=1" type="text/javascript"></script>

Ответ 3

Другое предложение, которое помогло мне:

Вот что случилось со мной = > Мой script работал один раз в 3 раза, я загружал страницу, и ошибка была "Google не определен".

Моя функция, использующая карту google, была в моей готовой функции jQuery

$(function(){
   //Here was my logic
})

Я просто добавил этот код, чтобы убедиться, что он работает:

$(function(){
   $(window).load(function(){
       //Here is my logic now
   });
});

Это работает как шарм. Если вы хотите получить более подробную информацию о разнице между готовым документом и загрузкой окна, вот отличный пост: window.onload vs $(document).ready()

Готовое событие происходит после загрузки документа HTML, в то время как событие onload происходит позже, когда все содержимое (например, изображения) также имеет загружен.

Событие onload является стандартным событием в DOM, а готовое событие специфичен для jQuery. Целью готового мероприятия является то, что он должно происходить как можно раньше после загрузки документа, поэтому этот код, который добавляет функциональность элементам на странице, не нужно дождаться загрузки всего содержимого.

Ответ 4

Попробуйте использовать это:

<script src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> 

Ответ 5

попробуйте следующее:

<script src="https://maps.googleapis.com/maps/api/js"></script>

он работает для меня... дело в том, чтобы изменить HTTP на HTTPS

Ответ 6

Добавьте тип для script

<script src="https://maps.googleapis.com/maps/api/js" type="text/javascript"></script>

Таким образом, важной частью является текст text/javascript.

Ответ 7

Из Firefox 23 установлено значение Смешанное блокирование содержимого, установленное по умолчанию (локально отключено). Он также блокирует некоторые API от Google, если вы используете безопасное соединение и некоторые незащищенные API.

Чтобы отключить его, вам нужно щелкнуть экран, который появляется в строке местоположения, когда есть какое-то незащищенное содержимое, установить "Отключить защиту", а затем вам придется посмотреть желтый восклицательный знак в строке местоположения: (

https://blog.mozilla.org/.../mixed-content-blocking-enabled-in-firefox-23/

Вы всегда можете попробовать также заменить HTTP-протокол на https в URL-адресе API. Если API предоставляется также в безопасном соединении - вы не увидите никаких предупреждений.

Это работает для меня.

Ответ 8

Вы можете попробовать следующее:

Сначала добавьте async defer. Это указывает, что script будет выполняться асинхронно, как только он будет доступен, и когда страница закончит разбор.

Во-вторых, добавьте функцию initMap() в качестве обратного вызова в теге script внутри вашего html. Таким образом, карта будет инициализирована до document.ready и window.onload:

<script async defer src="{{ 'https://maps.googleapis.com/maps/api/js?key=$key&language='.$language.'&region='.$country.'&callback=initMap' }}"></script>

<script>
    var map;
    function initMap() {
        map = new google.maps.Map(document.getElementById('map'), {
            center: {lat: -34.397, lng: 150.644},
            zoom: 4,
            disableDefaultUI: false,
            scrollwheel: false,
            styles: [{ ... }]
        });
    }
</script> 

Наконец, вы можете использовать объект карты внутри своих js файлов.

Ответ 9

Я не знаю точно, но вот мои лучшие предложения.

Вы используете jQuery. Поэтому вместо установки события вы действительно должны использовать $(function() {...}); для инициализации. Причина этого заключается в том, что он гарантирует, что все сценарии на странице загружены, и вы не ограничены только одной функцией init, например, с тегом body onload.

Кроме того, убедитесь, что ваш Javascript-код после включения Google. В противном случае ваш код может выполняться до создания объектов Google.

Я также предлагаю взглянуть на эту страницу о порядке событий.

http://dean.edwards.name/weblog/2005/09/busted/

Ответ 10

Пожалуйста, проверьте заказ, который вы вызываете, ваши библиотеки, следующий порядок

  • <script type = "text/javascript" src = "../resources/googleMaps/jquery-ui.js"></script>

  • <script type = "text/javascript" src = "../resources/googleMaps/jquery-ui.min.js"></script>

  • <script type = "text/javascript" src="http://maps.googleapis.com/maps/api/

  • METOD <script type = "text/javascript" src = "googleMaps/mapa.js"></script>

Я был с этой проблемой, я только что скорректировал свой заказ.

Ответ 11

Изменен

 
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=API"> 
      function(){
            myMap()
                }
</script>

и сделал это

<script type="text/javascript">
      function(){
            myMap()
                }
</script>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=API"></script>

Работало:)

Ответ 12

В моем случае я загружал скрипт google через http, в то время как на моем сервере был SSL и он загружался через https. Поэтому мне пришлось загрузить скрипт через https

Ответ 13

Попробуй это. ТТ работал с Ангулером7

Ответ 14

Я думаю, что самый простой трюк:

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR API KEY&callback=initMap">google.maps.event.addDomListener(window,'load', initMap);</script>

Он запустит карту, когда ваше приложение будет готово.

Проверь это.