Olk Okenheld: Script geht nur unter IE und Netscape bis 4.x - Netscape 7.x ???

Hi,

ich hab ein Script gefunden, mit dem man "Schneeflocken" über den Bildschirm fallen lassen kann, leider funktioniert es nur unter dem IE und dem Netscape bis zur Version 4.x, was müsste ich denn ändern, damit es auch in den neuen Versionen funktioniert?
Oder gibt es eine andere Möglichleit, wie man ein Bild (Schneeflocke) über den Bildschirm "fallen lassen" kann?

Der Autor des Scriptes existiert leider nicht mehr unter der angegebenen Adresse. :-(

<SCRIPT language=JavaScript1.2>
<!-- Original:  Altan (snow@altan.hr) -->
var no = 14; // snow number
var speed = 5; // smaller number moves the snow faster
var snowflake = "snow.gif";

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 = 800, doc_height = 600;
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-50);  // 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(snowflake + "" border="0"></layer>");
} else {
document.write("<layer name="dot"+ i +"" left="15" ");
document.write("top="15" visibility="show"><img src="");
document.write(snowflake + "" 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; LEFT: 15px;"><img src="");
document.write(snowflake + "" border="0"></div>");
} else {
document.write("<div id="dot"+ i +"" style="POSITION: ");
document.write("absolute; Z-INDEX: "+ i +"; VISIBILITY: ");
document.write("visible; TOP: 15px; LEFT: 15px;"><img src="");
document.write(snowflake + "" border="0"></div>");
      }
   }
}
function snowNS() {  // 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("snowNS()", speed);
}
function snowIE() {  // 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 = document.body.clientHeight;
}
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("snowIE()", speed);
}
if (ns4up) {
snowNS();
} else if (ie4up) {
snowIE();
}
// End -->
</SCRIPT>

Danke im Vorraus

Olk

  1. hallo,

    ich hab ein Script gefunden, mit dem man "Schneeflocken" über den Bildschirm fallen lassen kann

    Dieses Script wird um diese Jahreszeit mit schöner Regelmäßigkeit von vielen Leuten "gefunden", die dann genauso ratlos sind wie du.

    was müsste ich denn ändern, damit es auch in den neuen Versionen funktioniert?

    Du müßtest alle Zeilen, die ein DOM-fähiger Browser deinen Wünschen gemäß interpretieren soll, eben so umschreiben, daß er es versteht  -  das heißt: schreib es dir gleich ganz und gar neu.
    Für den Anfang aber reicht es, wenn du versuchst, dir ein paar Grundlagen von Javascript mit Anleitung von http://selfhtml.teamone.de/javascript/index.htm beizubringen.

    Oder gibt es eine andere Möglichleit, wie man ein Bild (Schneeflocke) über den Bildschirm "fallen lassen" kann?

    Klar gibt es die, sogar mehrere.

    <SCRIPT language=JavaScript1.2>

    Das ist schon völlig verkehrt.

    var ns4up = (document.layers) ? 1 : 0;  // browser sniffer
    var ie4up = (document.all) ? 1 : 0;

    Und das sind deine "Ausschlußkriterien". Ändere das zu "GetElementById()"

    Es gibt noch mehr Probleme, aber das sind erstmal die Grundlagen.

    Grüße aus Berlin

    Christoph S.

  2. Hallo Olk,

    ich hab ein Script gefunden, mit dem man "Schneeflocken" über den Bildschirm fallen lassen kann,

    man merkt es Weihnachtet: alle wollen Adventkalender und Schneeflocken :-)

    leider funktioniert es nur unter dem IE und dem Netscape bis zur Version 4.x,

    kein Wunder (s.u.)

    was müsste ich denn ändern, damit es auch in den neuen Versionen funktioniert?

    Syntax verwenden den auch Mozilla/Opera verstehen (imho ist es aber sinnvoller wenn du dir gleich eine Script suchst, dass in den genannten Browsern funktioniert, als in diesem "herumzudoktern")

    Oder gibt es eine andere Möglichleit, wie man ein Bild (Schneeflocke) über den Bildschirm "fallen lassen" kann?

    keine Ahung, ich habe mir das Script nicht näher angeschaut, aber mit Schneeflocken würde ich sowieso vorsichtig sein - die können einen Rechner ziemlich ausbremsen.

    <SCRIPT language=JavaScript1.2>

    hier fehlt das type-Attribut

    var ns4up = (document.layers) ? 1 : 0;  // browser sniffer
    var ie4up = (document.all) ? 1 : 0;

    das sind die Übeltäter - document.layers kennt nur der ns4 und document.all nur der IE - alle anderen Browser bleiben damit außen vor.

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
  3. Hi Olk !
    Du bist ja ein richtiger Power-Poster ! Klappt der OmenTree mittlerweile ??
    Übrigens gibt es neuere Snowfall-Scripts . Wer sucht der findet !
    http://home.t-online.de/home/VillaHammerschmidt/snowfall/snow.htm

    1. Hi,

      Du bist ja ein richtiger Power-Poster ! Klappt der OmenTree mittlerweile ??

      Ja, man hat mir aufgedrückt den Kalender zu machen, weil ich öfter mal Webseiten mache und früher auch mal programiert habe, aber leider ist mein Gedächtnis öfter mal anderer Meinung als ich und deswegen bleib ich dann manchmal hängen und weiß nicht mehr so unbedingt weiter, hinzu kommt noch, dass ich nie Javascript gelernt hab und viele Befehle und der Gleichen die ich kenne in Javascript überhaupt nicht implementiert sind, das fällt mir dann aber auch meist erst später auf, daher bin ich recht froh, dass ich hier Hilfe finde. Aber das andere steht ja jetzt alles. THX to all. :-)

      Übrigens gibt es neuere Snowfall-Scripts . Wer sucht der findet !
      http://home.t-online.de/home/VillaHammerschmidt/snowfall/snow.htm

      Super, dann schau ich gleich mla rein, danke.

      Olk

      1. Hi Olk !!
        Hab das alte Skript mal umgebaut !
        Jetzt läuft's auch in den Neuen :o))

        <html><head></head><title></title>
        <body bgcolor="#000000">
        <script language="JavaScript">
        var snowsrc="snow.gif"
        var no = 10;

        var ns4 = (document.layers) ? 1 : 0;
        var ie = (document.all ) ? 1 : 0;
        var dom = (document.getElementById && !document.all) ? 1 : 0;

        var dx, xp, yp;
        var am, stx, sty;
        var i;
        var doc_width = screen.availWidth;
        var doc_height = screen.availHeight;

        if (ns4)
        {   doc_width = self.innerWidth;
             doc_height = self.innerHeight;  }
        else if (ie)
        {  doc_width = document.body.clientWidth;
            doc_height = document.body.clientHeight;  }
        else if (dom)
        {  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;
            xp[i] = Math.random()*(doc_width-50);
            yp[i] = Math.random()*doc_height;
            am[i] = Math.random()*20;
            stx[i] = 0.02 + Math.random()/10;
            sty[i] = 0.7 + Math.random();

        if (ns4)
            {
             if (i == 0)
                  { document.write("<layer name='dot"+ i +"' left='-20' top='-20' visibility='show'><img src='"+snowsrc+"' border='0'></layer>"); }
             else
                  { document.write("<layer name='dot"+ i +"' left='-20' top='-20' visibility='show'><img src='"+snowsrc+"' border='0'></layer>"); }
            }
        else if (ie)
           {
              if (i == 0)
                  { document.write("<div id='dot"+ i +"' style='position:absolute; z-index:"+ i +"; visibility:visible; top:-20px; left:-20px;'><img src='"+snowsrc+"' border='0'></div>"); }
              else
                 { document.write("<div id='dot"+ i +"' style='position:absolute; z-index:"+ i +"; visibility:visible; top:-20px; left:-20px;'><img src='"+snowsrc+"' border='0'></div>"); }
            }
        else if (dom)
           {
              if (i == 0)
                  { document.write("<div id='dot"+ i +"' style='position:absolute; z-index:"+ i +"; visibility:visible; top:-20px; left:-20px;'><img src='"+snowsrc+"' border='0'></div>"); }
              else
                  { document.write("<div id='dot"+ i +"' style='position:absolute; z-index:"+ i +"; visibility:visible; top:-20px; left:-20px;'><img src='"+snowsrc+"' border='0'></div>"); }
            }
        }

        function snowNS4() {
            for (i = 0; i < no; ++ i) {
              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("snowNS4()", 10);
            }

        function snowIE() {
            for (i = 0; i < no; ++ i) {
              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 = document.body.clientHeight;
              }
              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("snowIE()", 10);
          }

        function snowDOM() {
          for (i = 0; i < no; ++ i) {
              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 = document.body.clientHeight;
              }
              dx[i] += stx[i];
              document.getElementById("dot"+i).style.top = yp[i];
              document.getElementById("dot"+i).style.left = xp[i] + am[i]*Math.sin(dx[i]);
            }
            setTimeout("snowDOM()", 10);
          }

        if (ns4)
         {    snowNS4();  }
         else if (ie)
         {    snowIE();  }
         else if (dom)
         {    snowDOM();  }

        </script>
        </body></html>

        1. Hi,

          Hab das alte Skript mal umgebaut !
          Jetzt läuft's auch in den Neuen :o))

          Ein ganz großes Dankeschön 08/15.

          Gruß Olk