"ReferenceError: Can' T find variable: google" auf die überprüfung für nicht definierte

Ich dachte, ich hatte Javascript schon ziemlich viel herausgefunden, dann ist dies (scheinbar basic), was herausspringt:

Ich habe eine Phonegap /jQuery Mobile-app, Google Maps. Wenn die Telefon-internet-Verbindung ist nicht verfügbar, kurz, und an die genaue Zeit, die app versucht zu laden der Google Maps API nach app-start-up, die alle Karten Verwandte Funktionen natürlich nicht funktionieren.

Aber komisch ist dieser code bewirkt, dass die Funktion, die es in die Pause und stop die Ausführung der Vergangenheit, wenn der check (im Sinne der doSomething() Zeile wird nie ausgeführt):

function myFunction() {
    if(google === undefined) {
        alert("Google Maps didn't load!");
    }

    doSomething();
}

Wenn man die Konsole in Safari-Entwickler-tools sehe ich den Fehler in diesem post-Titel.

Nicht überprüft, für nicht definierte Variablen, wie soll das sicher sein? Ich möchte zu handhaben, edge-Fall, wo die Google-Maps-API nicht geladen, aber wie kann ich tun, wenn ich kann nicht überprüfen, für nicht definierte? Ich versuchte nur zu tun if(!google), aber das gab das gleiche Ergebnis.

Habe ich auch versucht, mit der er Google Loader zum laden des maps-API dynamisch, wenn der Benutzer navigiert zu einer Seite mit Karten, aber ich habe nicht in der Lage gewesen, um das zu bekommen, zu arbeiten (Loader hätte Sie dynamisch geladen werden, sowie für diese zu helfen, und ich kann nicht scheinen, um in der Lage sein, um dynamisch zu laden-script). Ich habe versucht, es zu tun, die dynamisch mit reinem Javascript auch, aber ich denke, die document.write im Google Maps API-Javascript ist zu brechen, dass auf Mobile Safari. Ich habe auch versucht, mit jQuery $.getScript()ohne Erfolg.

In jedem Fall, ich sollte in der Lage sein, dies zu behandeln edge-Fall, wenn ich erkennen kann, dass die maps-API wurde nicht geladen, also es läuft alles darauf: Wie kann das sein und warum nicht den oben genannten undefined prüfen die Arbeit?

  • Versuchen if (typeof google === "undefined") {
  • Danke, das hat funktioniert. Ich werde die Schuld am späten Freitag Nachmittag für die Vernachlässigung, dies zu betrachten. Ich verwendet, um den typeof-operator verwenden, die ganz ein bisschen, aber JSLint und andere Programmierer beschwerte sich die ganze Zeit, also habe ich einfach komplett aufgehört, es.
InformationsquelleAutor Joe Dyndale | 2013-05-31
Schreibe einen Kommentar