Nicoletta: coolmenu - 3.*.js datei hinzufügen

hallo,
das coolmenu 3 ist nicht das neuste, aber genau das was ich grad so brauche.

ich schreib mal mein problem, ob ich hilfe oder antwort bekomme wird sich ja zeigen.

ich habe im body folgendes eingefügt
------------------------------------------------------

<script language="JavaScript1.2" src="coolmenus3.js">
/*****************************************************************************
Copyright (c) 2001 Thomas Brattli (www.bratta.com)
eXperience DHTML coolMenus - Get it at www.bratta.com
Version 3.02
This script can be used freely as long as all copyright messages are
intact.
******************************************************************************/
        </script>
<script language="JavaScript1.2" src="coolmenus3a.js">
        </script>

------------------------------------------------------
funktioniert
nun wird sich noch ein blätterregen gewünscht. die anweisung steht in einer weiteren *.js datei und funktioniert auch. nur zusammen klappt das nicht. lösche ich meine herbst.js datei funktioniert die navigation. lösche ich die navigation funktioniert diese herbst.js datei. nur zusammen leider nicht.
-----------------------------------------------------------------------

<script language="JavaScript1.2" src="herbst.js"></script>
<script language="JavaScript1.2" src="coolmenus3.js">
/*****************************************************************************
Copyright (c) 2001 Thomas Brattli (www.bratta.com)
eXperience DHTML coolMenus - Get it at www.bratta.com
Version 3.02
This script can be used freely as long as all copyright messages are
intact.
******************************************************************************/
        </script>
<script language="JavaScript1.2" src="coolmenus3a.js">
        </script>

---------------------------------------------------------------------
ich hab schon wie wild gegoogelt, aber keine lösung finden können. ich hab sogar den blätterregen mit in die anderen zwei *. js dateien kopiert, weil ich dachte das könnte klappen. weder noch.

kann ich keine 3.*.js datei hinzufügen?

um eine rückantwort wäre ich sehr dankbar.

viele grüße nicoletta

  1. Liebe Nicoletta,

    <script language="JavaScript1.2" src="coolmenus3.js">

    das "language"-Attribut ist streng veraltet. Bitte ersetze diese Zeile (und alle anderen analog dazu) durch folgende:

    <script type="text/javascript" src="coolmenus3.js">

    Es ist wichtig, das "type"-Attribut mit dem Wert "text/javascript" zu verwenden.

    Aber das wird Dein Problem noch nicht lösen.

    nun wird sich noch ein blätterregen gewünscht. [...] nur zusammen klappt das nicht.

    Ich vermute ganz stark, dass das Script, das im Quelltext zuletzt notiert wurde, auch tatsächlich beim Laden der Seite abläuft, während das im Quelltext zuvor notierte keinerlei Reaktion zeigt, stimmt's?

    Anscheinend überschreiben diese beiden Scripte ein- und dieselbe Variable/Funktion/Objekt, welche sie aber unbedingt brauchen, um wie gewünscht zu arbeiten.

    Bitte sei so gut und stelle die von Dir im Moment zusammengestellte Seite als Test-Exemplar ins Netz, damit man sich anschauen kann, wie die Scripte genau funktionieren, denn Deine Problembeschreibung enthält wesentliche Codebeispiele nicht, um Dir konkret weiterzuhelfen. Ich vermute auch, dass Du die Scripte noch nicht ausreichend verstehst, um die relevanten Code-Abschnitte hier posten zu können, oder? Daher wäre ein Link zu Deiner Testseite jetzt das Beste!

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

  2. Liebe Nicoletta,

    vielen Dank für Deine Mail... lieber wäre mir eine Antwort hier im Forum gewesen!

    Ich denke, Dir kann geholfen werden. Zunächst einmal der link für alle hier (falls jemand einmal dasselbe Problem lösen muss):
    http://www.wind-wellen-wasser.de/test/index.html

    Du verwendest drei Scripte, die Du im Kopf Deiner HTML-Datei einbindest. Zwei davon arbeiten zusammen (coolmenus3.js und coolmenus3a.js), ein anderes zuvor eingebundenes (herbst.js) wird in Teilen von coolmenus3.js überschrieben.

    Der eigentliche Dreh- und Angelpunkt ist das berühmte window.onload, welches beide Scripte (herbst.js und coolmenus3.js) jeweils für sich alleine in Anspruch nehmen. Das zuletzt notierte Script (in diesem Fall coolmenus3.js) überschreibt dabei die zuvor eingetragenen Werte und gewinnt den "Wettbewerb".

    Da die von Dir verwendeten Scripte sehr alt sind (sieh nach, für welche Browsergenerationen sie gemacht wurden!), ist ihre Vorgehensweise dabei eben recht archaisch und simpel. Deswegen sind sie aber auch zueinander inkompatibel! Im Falle von coolmenus3.js war mir der Code zu unübersichtlich, daher habe ich einen Patch für herbst.js, das Du bitte als letztes Script einbindest, und welches mit dem Patch das coolmenus3.js nicht mehr aussperrt.

    Suche nach folgender Code Zeile ziemlich am Ende von herbst.js und ändere alles Folgende entsprechend:

    setTimeout('dsbl()',stopafter);  
      
    // Korrektur ab hier  
    var oldWinOnLoad = window.onload;  
    window.onload= function () {  
        if (typeof(oldWinOnLoad) == "function")  
            oldWinOnLoad();  
        fall();  
    };
    

    Damit sollten beide Scripte gemeinsam laufen. Ein weiterer Fall ist das von herbst.js benutzte window.onresize, welches von herbst.js auch für sich alleine in Anspruch genommen wird. Auch hier sollte man intelligenter vorgehen. Die folgende Änderung wäre sinnvoll, muss aber wahrscheinlich nicht unbedingt sein:

    Suche nach folgender Zeile:

    windims();  
      
    // Korrektur ab hier  
    oldWinOnResize = window.onresize;  
    window.onresize = function () {  
        if (typeof(oldWinOnResize) == "function")  
            oldWinOnResize();  
        windims();  
    };
    

    Bitte sei so nett und poste hier Deine Ergebnisse (oder gar Erfolge?)! Ich bin schließlich neugierig, ob meine Vorschläge geholfen haben!

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. hallo felix,
      vielen dank für deine mühe. ich habe folgendes geändert

      setTimeout('dsbl()',stopafter);

      // Korrektur ab hier
      var oldWinOnLoad = window.onload;
      window.onload= function () {
          if (typeof(oldWinOnLoad) == "function")
              oldWinOnLoad();
          fall();
      };
      }
      läuft aber leider trotzdem nicht. hast du noch eine idee?
      viele grüße und ein großes danke für deine mühe
      nicoletta

      1. Liebe Nicoletta,

        läuft aber leider trotzdem nicht. hast du noch eine idee?

        ja. Ich schrieb Dir unter anderem:

        daher habe ich einen Patch für herbst.js, das Du bitte als letztes Script einbindest,

        Im Moment steht in der HTML-Datei das herbst-Script noch als erstes Script im Quelltext, gefolgt von coolmenus3.js...

        :-)

        Liebe Grüße aus Ellwangen,

        Felix Riesterer.

        1. Hallo Felix,
          ich hab eine Lösung gefunden. Ich so lange gebastelt bis es lief. Vielen Dank für deine Mühle und Hilfsbereitschaft. Von Deiner Sorte darf es mehr Menschen geben, von meiner Sorte der nichts Könner eindeutig weniger :-)
          Vielen Dank Nicoletta

          1. Liebe Nicoletta,

            ich hab eine Lösung gefunden.

            Hast Du? Auf Deiner Testseite sieht man keine Herbstblätter... auf der Homepage Deiner Domain auch nicht.

            Ich so lange gebastelt bis es lief.

            Und was genau hast Du geändert, um zum gewünschten Ergebnis zu gelangen? Bin wirklich neugierig!

            Liebe Grüße aus Ellwangen,

            Felix Riesterer.

            1. hallo felix,
              das neue script funktioniert nur im ie. es ist nur eine halbe lösung, aber besser als nix. ich kopier es mal:

              var no = 10; // Anzahl der Laubblaetter
              var speed = 25; // Geschwindigkeit -> je kleiner die Zahl, desto schneller
              laub = new Array(3);
              laub[0] = "herbst/fl.gif"; // Bild
              laub[1] = "herbst/al.gif"; // Bild
              laub[2] = "herbst/cl.gif"; // Bild

              var ns4up = (document.layers) ? 1 : 0;  // browser sniffer
              var ie4up = (document.all) ? 1 : 0;
              var dx, xp, yp;    // coordinate and position variables
              var am, stx, sty;  // amplitude and step variables
              var i, doc_width, doc_height;
              if (ns4up) {
              doc_width = self.innerWidth;
              doc_height = self.innerHeight;
              } else if (ie4up) {
              doc_width = document.body.clientWidth;
              doc_height = document.body.clientHeight;
              }
              dx = new Array();
              xp = new Array();
              yp = new Array();
              am = new Array();
              stx = new Array();
              sty = new Array();
              for (i = 0; i < no; ++ i) {
              dx[i] = 0;                        // set coordinate variables
              xp[i] = Math.random()*(doc_width-20);  // set position variables
              yp[i] = Math.random()*doc_height;
              am[i] = Math.random()*20;         // set amplitude variables
              stx[i] = 0.02 + Math.random()/10; // set step variables
              sty[i] = 0.7 + Math.random();     // set step variables
              if (ns4up) {                      // set layers
              if (i == 0) {
              document.write("<layer name="dot"+ i +"" left="15" ");
              document.write("top="15" visibility="show"><img src="");
              document.write(laub[i%3] + "" border="0"></layer>");
              } else {
              document.write("<layer name="dot"+ i +"" left="15" ");
              document.write("top="15" visibility="show"><img src="");
              document.write(laub[i%3] + "" border="0"></layer>");
                 }
              } else if (ie4up) {
              if (i == 0) {
              document.write("<div id="dot"+ i +"" style="POSITION: ");
              document.write("absolute; Z-INDEX: "+ i +"; VISIBILITY: ");
              document.write("visible; TOP: 15px; CENTER: 15px;"><img src="");
              document.write(laub[i%3] + "" border="0"></div>");
              } else {
              document.write("<div id="dot"+ i +"" style="POSITION: ");
              document.write("absolute; Z-INDEX: "+ i +"; VISIBILITY: ");
              document.write("visible; TOP: 15px; CENTER: 15px;"><img src="");
              document.write(laub[i%3] + "" border="0"></div>");
                    }
                 }
              }
              function laubNS() {  // Netscape main animation function
              for (i = 0; i < no; ++ i) {  // iterate for every dot
              yp[i] += sty[i];
              if (yp[i] > doc_height-50) {
              xp[i] = Math.random()*(doc_width-am[i]-30);
              yp[i] = 0;
              stx[i] = 0.02 + Math.random()/10;
              sty[i] = 0.7 + Math.random();
              doc_width = self.innerWidth;
              doc_height = self.innerHeight;
              }
              dx[i] += stx[i];
              document.layers["dot"+i].top = yp[i];
              document.layers["dot"+i].left = xp[i] + am[i]*Math.sin(dx[i]);
              }
              setTimeout("laubNS()", speed);
              }
              function laubIE() {  // IE main animation function
              for (i = 0; i < no; ++ i) {  // iterate for every dot
              yp[i] += sty[i];
              if (yp[i] > doc_height-50) {
              xp[i] = Math.random()*(doc_width-am[i]-30);
              yp[i] = 0;
              stx[i] = 0.02 + Math.random()/10;
              sty[i] = 0.7 + Math.random();
              doc_width = document.body.clientWidth;
              doc_height = 530; // 900-1000?
              }
              dx[i] += stx[i];
              document.all["dot"+i].style.pixelTop = yp[i];
              document.all["dot"+i].style.pixelLeft = xp[i] + am[i]*Math.sin(dx[i]);
              }
              setTimeout("laubIE()", speed);
              }
              if (ns4up) {
              laubNS();
              } else if (ie4up) {
              laubIE();
              }

              viele grüße nicole

              1. Liebe Nicoletta (oder Nicole?),

                Du hast mir noch immer nicht verraten, ob das Notieren an späterer Position Dein Herbst-Script tatsächlich zum Leben erweckt hat!

                vorher (syntaktisch bewusst ungenau):
                <script herbst>
                <script coolmenu3>
                <script coolmenu3a>

                hinterher (so sollte es sein):
                <script coolmenu3>
                <script coolmenu3a>
                <script herbst>

                Bei dieser Reihenfolge der Einbindungen sollte das gepatchte ursprüngliche Herbst-Script wie gewünscht arbeiten. Auf Deiner Testseite sehe ich jedenfalls noch die alte Reihenfolge...

                Liebe Grüße aus Ellwangen,

                Felix Riesterer.

                1. Hallo Felix,
                  das hatte ich gleich am Anfang ausprobiert. Ich hatte die herbst.js davor, dazwischen und dahinter :-) Leider alles ohne Erfolg.

                  Vielen Dank für deine Mühe Nicoletta (kurz Nicole)