Wolfgang: Onloads zusammenfassen

Hi.
Ich habe eine Site, die mit verschiedenen JavaScripten von diversen Partnern mit Werbung bestückt wird, auf der aber auch diverse eigene Scripte laufen.

Problem ist, dass viele Funktionen in den verschiedensten Scripten per "onload" aufgerufen werden - entsprechend  wird dann immer nur das letzte Onload im Quelltext ausgeführt. An die häufig wechselnden Scripte der Partner komme ich nicht ran und die IFrames, in denen die Werbung bisher lief, soll ich auflösen... Frage:
Kennt irgendjemand nen nurClient-seitigen(!) Trick, diese Onloads zu kombinieren?
(leider klappt ein onlod+= nicht)

Gruß Wolfgang

  1. hi,

    Kennt irgendjemand nen nurClient-seitigen(!) Trick, diese Onloads zu kombinieren?

    Nein, den wird's kaum geben, wenn

    An die häufig wechselnden Scripte der Partner komme ich nicht ran

    gilt.
    Sobald diese window.onload = ... nutzen, überschreiben sie dir damit gnadenlos das vorherige onload.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. function addLoadEvent(func) {
      var oldonload = window.onload;
      if (typeof window.onload != 'function') {
        window.onload = func;
      } else {
        window.onload = function() {
          oldonload();
          func();
        }
      }
    }

  3. Hi,

    Problem ist, dass viele Funktionen in den verschiedensten Scripten per "onload" aufgerufen werden - entsprechend  wird dann immer nur das letzte Onload im Quelltext ausgeführt.

    Ungetestete Überlegung:
    Du fügst _hinter_ den externen Scripten ein 'window.onload =  myFunc;' ein. Du suchst Dir die onload-Aufrufe aus den externen Scripten raus und sammelst sie in myFunc:

    function myFunc() {
       trackit();
       addserver();
       ...
    }

    Gruesse, Joachim

    --
    Am Ende wird alles gut.
  4. Wenn du weißt, wo die Onloads aufgebaut werden, dann kannst du ja vielleicht so vorgehen.

      
    var onloads=new Array();  
    function captOnloadbefehl() {  
      onloads[onloads.length] = String(/*Der Header, wovon gezogen werden soll. (Body, Window oder so)*/.onload)  
    }  
    
    

    -----------------
    |               |
    |   Werbung 1   |
    |               |
    -----------------
    <script>
    captOnloadbefehl()
    </script>

    ... Seite ...

    -----------------
    |               |
    |   Werbung 2   |
    |               |
    -----------------
    <script>
    captOnloadbefehl()
    </script>

    usw.

    So dürftest du die einzelnen Onload-Befehle in einem Array ablegen können.

    Ich weiß aber nicht, ob dir das jetzt hilft. Du könntest diesen String dann aufsprengen und die einzelnen Funktionen via Eval aufrufen.

    MFG
    Griever

  5. Sagenhaft!
    Ich hatte so viele konstruktive Antworten nicht erwartet, DANK AN ALLE! :-)

    Ich nehme also...

    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
      } else {
        window.onload = function() {
          oldonload();
          func();
        }
    }

    ...und kann ein bereits vorhandenes Onload weiter unten dann identifizieren... sehr schön...!

    Nun bin ich aber unverschämt: Kann ich auch noch ein "vorletztes und vorvorletztes Onload" identifizieren - weil ich eventuell ja mehrere onloads reinbekomme - ohne, dass ich diese in der Art wie oben verändern kann *heul*.

    1. Na logisch!
      Das "typeof" von Haren inklusive dem "Array" von Griever!

      Ich liebe Euch alle!

    2. Nun bin ich aber unverschämt: Kann ich auch noch ein "vorletztes und vorvorletztes Onload" identifizieren - weil ich eventuell ja mehrere onloads reinbekomme - ohne, dass ich diese in der Art wie oben verändern kann *heul*.

      Dazu gibt die funktion addEventListener() btw. attachEvent(), allerdings ist das ganze, zumal wenn man auch ältere Browser nicht auschliessen willst, nicht so einfach. Dazu hier eine längere Diskussion: http://www.quirksmode.org/blog/archives/2005/10/_and_the_winner_1.html und hier ist dann das ganze zu einer Lösung zusammengefßt http://therealcrisp.xs4all.nl/upload/addEvent_dean.html

      Struppi.