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:
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
wurde an den Anfang des <head>
-Abschnitts verschoben.$(function() {...});
wurde in eine Funktion namens initialize()
verschoben und <body onload="initialize()">
hinzugefügt.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.
"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
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>
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.
Versuchen Sie es mit diesem:
<script src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
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
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.
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.
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.'®ion='.$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.
Versuche dies. Ich habe mit Anguler7 gearbeitet
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
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.
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.
Bitte überprüfen Sie die Reihenfolge, die Sie anrufen, Ihre Bibliotheken und die folgende Reihenfolge
<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>
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 :)