Dermold: Wer kann mir den folgenden code erklären

Hallo,

Google verwendet diese Funktion auf seiner Suchseite:

function ga(o,e)
{
   if (document.getElementById)
   {
      a=o.id.substring(1);
      p = "";
      r = "";
      g = e.target;

if (g)
      {
         t = g.id;
         f = g.parentNode;

if (f)
         {
            p = f.id;
            h = f.parentNode;

if (h)
               r = h.id;
         }
      }
      else
      {
         h = e.srcElement;
         f = h.parentNode;

if (f)
            p = f.id;

t = h.id;
      }

if (t==a || p==a || r==a) return true;
      location.href=document.getElementById(a).href
   }
}

Kann mir vielleicht jemand genau erklären,was diese Funktion macht?

Dermold

  1. Hallo,

    woher kommen die übergabe-parameter o und e?

    LG, Alex

    Google verwendet diese Funktion auf seiner Suchseite:

    function ga(o,e)
    {

    1. Hallo,

      hier ein kleiner auschnitt wie das aufgerufen wird:

      <tr><td id=taw1 class=ch bgcolor=#ECF8FF nowrap onMouseOver="ss('gehe zu www.strato.de')" onMouseOut="cs()" onClick="ga(this,event)"><font size=-1><a id=aw1 href=/url?q=http://www.zanox-affiliate.de/ppc/%3F333020C827959834T&sa=l&ai=APeihxLsS-Yu9hcMqskpyBs55GtKwqSQ09-bBCEAkOBA8yKVAIEA5RA&num=1 onMouseOver="return ss('gehe zu www.strato.de')" onMouseOut="cs()"><b>Webspace</b> ab 0,28 EUR</a><br><font class=f size=-2>Supergünstige Domain-Pakete für nur<br>0,28 E/Monat und einmalig ab 9,90E<br><font color=green size=-1>www.strato.de</font><br>Interesse: <img src=/images/pos_bar.gif width=40 height=4 align=absmiddle border=0

      Vielleicht hilft es dir weiter wenn ich genauer sage was ich will. Wenn man bei google z.b. nach webspace sucht, werden rechts banner eingeblendet. ich versuche halt zu verstehen wie das prinzip genau funktioniert und dort wird halt die funktion verwendet.

      mich interessiert genau, ob das script unterscheidet, wenn ich auf so einem link draufklicke oder wenn ich mir die verknüpfung kopiere und in einem weiteren fenster lade uns ausführe (aber kein öffnen im neuen fenster). Ist da das ergebnis dasselbe oder ein anderes? in quelltext steht nämlich onClick="ga(this,event)" und wenn ich mir nur die vernknüpfung kopiere und in einem anderen fenster ausführe, ist es doch nicht gleich wenn ich drauf klicke, oder?

      würde mich freuen wenn wir das wer genauer erklären kann.

      dermold

      Hallo,

      woher kommen die übergabe-parameter o und e?

      LG, Alex

      Google verwendet diese Funktion auf seiner Suchseite:

      function ga(o,e)
      {

      1. Vielleicht hilft es dir weiter wenn ich genauer sage was ich will. Wenn man bei google z.b. nach webspace sucht, werden rechts banner eingeblendet. ich versuche halt zu verstehen wie das prinzip genau funktioniert und dort wird halt die funktion verwendet.

        Wenn es um das Bannereinblendeprinzip geht: Das hat mit der Javascriptfunktion nichts zu tun, es handelt sich um schnödes Tabellenlayout.

        Die Funktion bewirkt im Kern lediglich, daß man nicht direkt auf den Verweis klicken muß, sondern auch die gesamte umgebende Werbefläche nutzen kann. Das onclick-Ereignis ist dazu im <td> definiert. Die Zeile

        a=o.id.substring(1);

        liest aus dem Objekt o (die Tabellenzelle mit dem onclick) die ID aus. Diese gleicht bis auf das erste Zeichen der ID des enthaltenen <a>s (<td> hat "taw1", <a> "aw1"), daher das 'substring(1)'.
        Am Ende wird dann per

        location.href=document.getElementById(a).href

        die Zieladresse des Verweises ausgelesen und diese Seite geladen.

        Die dazwischen liegenden Zeilen sollen (soweit ich das überblicke) lediglich sicher stellen, daß das <a> seine normale Arbeit machen kann. Dazu werden die IDs einiger Elternobjekte geholt (t, p, r) und am Ende mit der (errechneten) ID des eigentlichen Verweises (a) verglichen:

        if (t==a || p==a || r==a) return true;

        Stimmen sie überein, bricht das Skript mit true ab, andernfalls wird oben zitierte location.href-Zeile ausgeführt.
        Der Grund für den Vergleich mehrerer Elternobjekte liegt wohl darin, daß in dem <a>-Block weitere Unterelemente liegen können; in Deinem Beispiel <b>.

        mich interessiert genau, ob das script unterscheidet, wenn ich auf so einem link draufklicke oder wenn ich mir die verknüpfung kopiere und in einem weiteren fenster lade uns ausführe

        Das Skript hat nur ein onClick-Ereignis definiert, noch dazu in der Tabellenzelle, nicht im Verweis. Das hat also absolut garnichts damit zu tun, ob Du in die Adressleiste Deines Browsers irgendetwas eintippst, geschweige denn damit, ob Du irgendeinen Text kopierst.

        Gruß,
          soenk.e