it-swarm.com.de

"Google ist nicht definiert", wenn Google Maps V3 in Firefox remote verwendet wird

Hier ist mein Rätsel: Ich habe eine Seite, die Google Maps V3 und jQuery verwendet. In FF5, Chrome und Safari funktionierte alles lokal gut. 

Nach dem Hochladen auf eine Website wird in der ersten Zeile der Fehler "Google ist nicht definiert" angezeigt, in dem ich versuche, ein Google-Objekt zu verwenden

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

Kommt nur in FF vor und tritt nur aus der Ferne auf (d. H., Wenn ich die Datei lokal in FF lade, funktioniert sie gut). Chrome und Safari scheinen gut zu funktionieren, genauso wie meine Android- und iPod-Browser.

Folgendes habe ich bisher ausprobiert:

  1. <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> wurde an den Anfang des <head>-Abschnitts verschoben.
  2. Der gesamte Inhalt von $(function() {...}); wurde in eine Funktion namens initialize() verschoben und <body onload="initialize()"> hinzugefügt.
  3. Gespielt mit Skripten und CSS-Dateien
  4. Fügte die URL http://maps.google.com/maps/api/js?sensor=false in das FF-Adressfeld ein und verifizierte, dass ich das legitime Skript bekomme

Da dies jedoch nur in FF auf einem Remote-Computer geschieht und ansonsten gut funktioniert, glaube ich nicht, dass es etwas mit meinem Code zu tun hat. Vielleicht ist die Ladereihenfolge in FF5 geschraubt. Möglicherweise werden Netzwerkressourcen anders als andere Browser priorisiert. Ich weiß wirklich nicht, was ich an diesem Punkt daraus machen soll.

Jede Hilfe wird geschätzt.
Kerl

Update:
Ich wollte nur die folgende Tatsache hinzufügen: Nachdem ich die vorherige Version auf einem Mac ausprobiert hatte, habe ich FF5 in Windows ausprobiert und das gleiche Verhalten repliziert.
.__Um guten Maß habe ich auch Pale Moon ausprobiert - gleiche Ergebnisse. Chrome 14, Opera 11.50 und sogar frickin 'IE9 (das nicht im Testplan enthalten war) funktionieren. Nur FF5, jetzt unter Mac und Windows 7, schlägt auf dieser Seite fehl. 

50

"Google ist nicht definiert" wurde mehrmals angezeigt Wahrscheinlich hat Google Script ein Problem, das mit FF-Addon BTW . FF nicht ordnungsgemäß geladen werden kann. FF hat eine Neustartoption (wie Windows-Neustart) > Neustart mit deaktivierten Add-Ons

24
user841019

Ich hatte den gleichen Fehler "Google ist nicht definiert" bei der Verwendung von Gmap3. Das Problem war, dass ich 'gmap3' vor 'google' eingeschlossen hatte, also habe ich die Reihenfolge umgekehrt:

<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>
20
Diego Pino

Ein weiterer Vorschlag, der mir geholfen hat:

Folgendes ist mir passiert => Mein Skript funktionierte einmal in 3 Mal, als ich die Seite lud und der Fehler war, dass «Google nicht definiert ist».

Meine Funktion mit der Google-Map war in der Ready-Funktion meines jQuery-Dokuments

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

Ich habe einfach diesen Code hinzugefügt, um sicherzustellen, dass er funktioniert:

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

Es wirkt wie ein Zauber. Wenn Sie weitere Informationen zum Unterschied zwischen dem Dokument bereit und dem Laden des Fensters benötigen, finden Sie hier einen großartigen Beitrag dazu: window.onload vs $ (document) .ready ()

Das ready-Ereignis tritt nach dem Laden des HTML-Dokuments ein, während Das Onload-Ereignis tritt später ein, wenn der gesamte Inhalt (z. B. Bilder) ebenfalls .__ hat. geladen worden.

Das Onload-Ereignis ist ein Standardereignis im DOM, während das Ready-Ereignis ist spezifisch für jQuery. Der Zweck des Ready Events ist, dass es sollte so früh wie möglich auftreten, nachdem das Dokument geladen wurde, so dass Dieser Code, der den Elementen auf der Seite Funktionalität hinzufügt, ist nicht muss warten, bis der gesamte Inhalt geladen ist.

15
Yann Chabot

Versuchen Sie es mit diesem:

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

versuche dies:

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

es funktioniert für mich ....__ der Punkt ist, ändern Sie HTTP in HTTPS

5
danisupr4

Fügen Sie den Typ für das Skript hinzu

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

Der wichtige Teil ist also der Typ Text/Javascript.

4
Julz

In Firefox 23 ist Mixed Content Blocking Enabled standardmäßig eingestellt (lokal deaktiviert). Es blockiert einige APIs von Google auch, wenn Sie eine sichere Verbindung und einige unsichere APIs verwenden.

Um es zu deaktivieren, müssen Sie auf Schild klicken, das in der Positionsleiste angezeigt wird, wenn ein paar unsichere Inhalte vorhanden sind, und "Deaktivieren des Schutzes" aktivieren. Anschließend müssen Sie das gelbe Ausrufezeichen in der Positionsleiste anzeigen :(

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

Sie können immer versuchen, das HTTP-Protokoll in der API-URL durch https zu ersetzen. Wenn die API auch in einer sicheren Verbindung bereitgestellt wird, werden keine Warnungen angezeigt.

Für mich geht das.

2
robson

Sie können folgendes versuchen:

Fügen Sie zuerst async defer hinzu. Dies gibt an, dass das Skript asynchron ausgeführt wird, sobald es verfügbar ist und die Analyse abgeschlossen ist. 

Fügen Sie die initMap()-Funktion als Rückruf in einem Script-Tag in Ihrer HTML-Datei hinzu. Auf diese Weise wird die Karte vor document.ready und window.onload initialisiert: 

<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> 

Schließlich können Sie das Kartenobjekt in Ihren js-Dateien verwenden.

1
tsveti_iko

Versuche dies. Ich habe mit Anguler7 gearbeitet

0

In meinem Fall habe ich das Google-Skript über http geladen, während mein Server über SSL und das Laden über https verfügt. Also musste ich das Skript über https laden

0
Yinka

Ich denke, der einfachste Trick ist:

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

Die Karte wird gestartet, wenn Ihre App fertig ist.

Überprüfen Sie dies.

0
Mke Nt

Ich weiß es nicht genau, aber hier sind meine besten Vorschläge.

Sie verwenden jQuery. Anstatt das Ereignis festzulegen, sollten Sie also wirklich $ (function () {...}) verwenden. um Ihre Initialisierung durchzuführen. Der Grund dafür ist, dass sichergestellt wird, dass alle Skripts auf der Seite geladen wurden und Sie nicht auf eine einzige Init-Funktion beschränkt sind, wie Sie es beim Onload-Body-Tag tun. 

Stellen Sie außerdem sicher, dass Ihr Javascript-Code hinter dem Google-Include steht. Andernfalls wird Ihr Code möglicherweise ausgeführt, bevor die Google-Objekte erstellt werden.

Ich würde auch vorschlagen, diese Seite über die Veranstaltungsreihenfolge anzusehen.

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

0
Paul Mendoza

Bitte überprüfen Sie die Reihenfolge, die Sie anrufen, Ihre Bibliotheken und die folgende Reihenfolge

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

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

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

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

Ich war bei diesem Problem, ich habe gerade meine Bestellung angepasst.

Hat das geändert 

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

und machte es 

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

Es funktionierte :)

0
Abhinav Anand