Bernhard2: Onload im body tag bei Google Maps entfernen

Hallo,

ich möchte Google Maps in eine Seite meiner Homepage einbauen.
Es soll die Möglichkeit geben eine Route zu brechnen.

Leider sthen im Body Tag onload-Anweisungen. Wie kann ich diese entfernen, bzw umgehen so dass der Routenplaner doch noch funktioniert?

Dies ist notwendig, da meine Seite den Content mit AJAX nachlädt. Einen IFrame möchte ich nicht verwenden.

mfg Bernhard

<html>
<head>
<title>Routenplaner</title>
<script src="http://maps.google.com/maps?..." type="text/javascript"></script>

<script type="text/javascript">
    //<![CDATA[

var map;
    var gdir;
    var geocoder = null;
    var addressMarker;

function load() {
      ...
    }

function setDirections(fromAddress, toAddress, locale) {
      ...
    }

function showAddress(address, popUpHtml) {
      ...
    }

function handleErrors(){
      ...
    }

function onGDirectionsLoad(){
      ...
    }
    //]]>
    </script>
  </head>
  <body onload="load();setDirections('Startadresse', 'Zieladresse', 'de');" onunload="GUnload()">

Kartenbereich:
<div id="map" style="width: 350px; height: 380px"></div>

Route:
<div id="directions" style="overflow: auto; height: 380px; width: 275px" ></div>

</body>
</html>

  1. Hallo Bernhard2,

    Du kannst es ans window-Objekt hängen:

    window.onload = function(e) {  
      foo(args);  
      bar();  
      baz(arg1, arg2);  
    }
    

    Mit freundlichem Gruß
    Micha

    1. Hallo Bernhard2 und Micha,

      wenn ich das richtig verstehe, liegt das Problem darin, dass ein onload-Eventhandler den anderen überbügelt, richtig?

      Man kann aber in JavaScript mehrere Handler an ein und dasselbe Event hängen:

        
      function addEvent(obj, evType, fn){  
        if (obj.addEventListener){  
          obj.addEventListener(evType, fn, false);  
          return true;  
        } else if (obj.attachEvent){  
          var r = obj.attachEvent("on"+evType, fn);  
          return r;  
      }  
        
      function doThis() {  
        alert("Hallo User!");  
      }  
        
      function doThat() {  
        alert("Hallo User, diese Dialoge nerven ganz schön, nicht wahr?");  
      }  
        
      var myBody = document.getElementsByTagName("body")[0];  
      addEvent(myBody, "load", doThis);  
      addEvent(myBody, "load", doThat);  
      
      

      Anmerkung: Ich habe hier eine leicht verkürzte Variante von Scott Andrews ursprünglicher addEvent-Funktion verwendet. Seit er die 2001 vorgestellt hat, gab es im Internet ungefähr zwanzig Millionen Diskussionen darum, dass damit in bestimmten Situationen dies und das schiefgehen kann. Als Gold-Standard gilt aktuell das Yahoo event utility. Meiner persönlichen Meinung nach kann man aber durchaus das ursprüngliche addEvent verwenden, solange gewisse Details keine Rolle spielen. Für einen 08/15-Callback reicht es allemal.

      1. Hallo anjoschu,

        wenn ich das richtig verstehe, liegt das Problem darin, dass ein onload-Eventhandler den anderen überbügelt, richtig?

        Nicht unbedingt. Möglich ist auch, dass der BODY-Tag und er sichtbare Inhalt nicht zusammen in einer Datei stehen. Der Inhalt also per include oder ähnliches geladen wird und aus diesem Grund keine Zuweisung erfolgen kann. Auch der Wunsch nach Trennung von HTML und JavaScript könnte möglich sein.

        Man kann aber in JavaScript mehrere Handler an ein und dasselbe Event hängen:

        Was ich nie bestritt und bereits zeigte ;-)

        Mit freundlichem Gruß
        Micha

  2. Moin!

    ich möchte Google Maps in eine Seite meiner Homepage einbauen.

    Google Maps bietet dir eine passende API an, die du einfach nur nutzen mußt. Tust du das?

    - Sven Rautenberg

    --
    "Love your nation - respect the others."