«Google не определен» при удаленном использовании Google Maps V3 в Firefox - PullRequest
52 голосов
/ 12 июля 2011

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

После загрузки на веб-сайт в первой строке появляется ошибка «Google не определен», когда я пытаюсь использовать объект Google

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

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

Вот что я попробовал:

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

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

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

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

Ответы [ 13 ]

25 голосов
/ 21 июля 2011

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

21 голосов
/ 06 апреля 2012

У меня была та же ошибка "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>
17 голосов
/ 04 мая 2016

Еще одно предложение, которое мне помогло:

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

Моя функция с использованием карты Google была в функции готовности моего документа jQuery

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

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

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

Он работает какочарование.Если вам нужна более подробная информация о разнице между готовым документом и загрузкой окна, вот отличный пост об этом: window.onload против $ (document) .ready ()

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

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

13 голосов
/ 30 ноября 2011

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

<script src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> 
6 голосов
/ 12 июня 2016

Добавить тип для скрипта

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

Итак, важной частью является тип text / javascript.

6 голосов
/ 21 августа 2015

попробуйте это:

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

у меня это работает ... дело в том, измените HTTP на HTTPS

2 голосов
/ 26 августа 2013

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

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

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

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

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

1 голос
/ 24 мая 2017

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

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

Во-вторых, добавьте функцию initMap() в качестве обратного вызова в тег скрипта внутри 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-файлов.

0 голосов
/ 09 марта 2019

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

0 голосов
/ 26 ноября 2018

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

...