Jan: JS Abfangmethode

Hallo wertes Forum,

und weiter geht meine Reise in Javascript. Ich habe es nun erfolgreich hinbekommen Google Maps einzubinden, dort mit Markern alles mögliche zu markieren und das ganze schön darzustellen. Nun möchte ich ein wenig Sicherheit hinzufügen und abfangen, falls die Position des Users nicht ausgelesen werden konnte.

function MapInit() {  
     alert("Test");  
	if(document.readyState != "complete") {  
		window.setTimeout(MapInit(), 100);  
		return false;  
	}  
	MapLoad();  
}  
function MapLoad() {  
	alert("Test2");  
	var Lat = document.getElementById("LocationLat").innerText;  
	var Long = document.getElementById("LocationLong").innerText;  
	alert("Lat: " + Lat + Long);  
	if((Lat != null) && (Long != null)) {  
		var Zoom = 9;  
		alert("Konnte lat und long laden: " + Lat + "-" + Long + "-" + Zoom);  
	}  
	else {  
		Lat = 50;  
		Long = 10;  
		var Zoom = 6;  
		alert("Konnte lat und long NICHT laden: " + Lat + "-" + Long + "-" + Zoom);  
	}  
	alert("Test3");  
 	var mapProp = {  
  		center:new google.maps.LatLng(Lat,Long),  
  		zoom:Zoom,  
  		mapTypeId:google.maps.MapTypeId.ROADMAP  
  	};  
	window.Map = new google.maps.Map(document.getElementById("Map"),mapProp);  
}

Folgender Ablauf: MapInit() ist dazu da sicherzustellen, dass alles nur ausgeführt wird, wenn die Seite komplett geladen wurde. Ich habe nämlich innerhalb von div Boxen einige Werte gespeichert, auf die JS zugreifen muss. War meiner Meinung nach die einzige gute Möglichkeit Variablen von PHP an JS zu übergeben. Klar hätte ich das mit <?=$Var?> machen können im JS Code, aber dann hätte ich am Ende des PHP Codes den JS Code gehabt und das würde etwas komisch aussehen meiner Meinung nach. Daher nun der "Workaround" alle Variablen in div's dem User darzustellen und mit MapInit() zu überprüfen, ob die Seite fertig geladen wurde, damit DANN JS weiter arbeiten kann.

Jetzt gibt es 2 Möglichkeiten. Entweder die Position des Users konnte ausgelesen werden oder nicht. Falls ja, springt er wunderbar durch alle testalerts() und gibt mir alles bis zu Test3 aus. Falls er Lat und Long nicht aus den div's auslesen konnte (da die Lokalisierung vorher mit PHP schief gegangen ist), soll er Standardwerte nehmen. Dies tut er leider nicht, da er nach "Test2" immer aufhört weiter Werte auszugeben. Was mache ich falsch?

Und noch die Frage hinterhergeschoben, was ihr von meinem "Workaround" haltet, oder ob ich  da was verbessern kann.

Danke!

  1. Hi,

    Falls er Lat und Long nicht aus den div's auslesen konnte (da die Lokalisierung vorher mit PHP schief gegangen ist), soll er Standardwerte nehmen. Dies tut er leider nicht, da er nach "Test2" immer aufhört weiter Werte auszugeben. Was mache ich falsch?

    check erstmal die Fehlerkonsole. Da ist wohl ein Fehler aufgetreten. Was sagt die Fehlermeldung?

  2. Hallo Jan,

    [code lang=javascript]function MapInit() {
         alert("Test");
    if(document.readyState != "complete") {
    window.setTimeout(MapInit(), 100);
    return false;
    }
    MapLoad();
    }

    schon mal an Eventhandler wie onload oder DomContentLoaded gedacht?

    var Lat = document.getElementById("LocationLat").innerText;

    soll das nur im IE laufen?

    Gruß, Jürgen