Non sono riuscito a fare molto, perche' purtroppo ho notato che TUTTI gli script che ci sono in giro con FireFox non funzionano, o meglio, la neve scende, appunto, solo fino ad un certo punto (di solito l'altezza in Pixel della risoluzione).
Ho provato a smanettare con lo script, ma penso che per farlo funzionare bene vada proprio riscritto. Comunque un palliativo l'ho trovato: per avere la neve che *continua* oltre il primo scalino, si puo' modificare cosi' il file "mod_schneeflocke_js.php" :
<?php
header("Cache-Control: must-revalidate");
$offset = 60*60*24*60;
$ExpStr = "Expires: ".gmdate("D, d M Y H:i:s",time() + $offset)." GMT";
header($ExpStr);
header('Content-Type: application/x-javascript');
global $mosConfig_live_site;
?>
//Javasript by f3de.it (c) 2006-2007
var no = 50; // Anzahl der Objekte
var speed = 57; // Speed der Objekte
var schneeflocke = "modules/mod_schneeflocke.gif"; // Pfad zum Bild
var ns4up = (navigator.appName=="Netscape" && navigator.appVersion.charAt(0)=="4") ? 1 : 0;
var ie4up = (document.all) ? 1 : 0;
var ns6up = (document.getElementById&&!document.all) ? 1 : 0;
var dx, xp, yp;
var am, stx, sty;
var i, doc_width = 800, doc_height = 100;
if (ns4up||ns6up) {
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; // Koordinaten-Variable setzen
xp[i] = Math.random()*(doc_width-50); // Position-Variable setzen
yp[i] = Math.random()*doc_height;
am[i] = Math.random()*20; // Amplituden-Variable setzten
stx[i] = 0.02 + Math.random()/10; // Variable für Schrittweite setzen
sty[i] = 0.7 + Math.random(); // Variable für Schrittweite setzen
// Layer konfigurieren für Netscape
if (ns4up) {
if (i == 0) {
document.write("<layer name=\"dot"+ i +"\" left=\"15\" ");
document.write("top=\"15\" visibility=\"show\"><img src=\"");
document.write(schneeflocke + "\" border=\"0\"></layer>");
} else {
document.write("<layer name=\"dot"+ i +"\" left=\"15\" ");
document.write("top=\"15\" visibility=\"show\"><img src=\"");
document.write(schneeflocke + "\" border=\"0\"></layer>");
}
// Layer konfigurieren für NS4
} else if (ie4up||ns6up) {
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(schneeflocke + "\" 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(schneeflocke + "\" border=\"0\"></div>");
}
}
}
// Haupt-Animations-Funktion für Netscape
function schneeflockeNS() {
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("schneeflockeNS()", speed);
}
// Haupt-Animations-Funktion für Internet Explorer
function schneeflockeIE() {
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("schneeflockeIE()", speed);
}
// Haupt-Animations-Funktion für Netscape6 und Mozilla
function schneeflockeNS6() {
for (i = 0; i < no; ++ i) {
yp[i] += sty[i];
if (yp[i] > doc_height+800) {
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.getElementById("dot"+i).style.top = yp[i]+"px";
document.getElementById("dot"+i).style.left = xp[i] + am[i]*Math.sin(dx[i])+"px";
}
setTimeout("schneeflockeNS6()", speed);
}
if (ns4up) {
schneeflockeNS();
} else if (ie4up) {
schneeflockeIE();
}else if (ns6up) {
schneeflockeNS6();
}
In pratica basta aggiungere un tot di pixel nell'ultima parte alla riga dove parte la funzione di animazione specifica per Mozilla. Io ho messo 800 pixel (cfr "doc_height+800"), e in pratica la neve scende fino a 800 pixel, che come scroll e' gia' accettabile, anche se la densita' della neve, purtroppo non e' piu' molto omogenea cosi'. Con IExplorer questa modifica non cambia nulla, perche' questa parte di script gira solo se riconosce Mozilla.
Spero di aver fatto qualcosa di utile. Non pensavo di dover fare tutto sto' casino per un po' di neve che scende ;-)
Se qualcuno riuscisse a rifare o modificare questo script per farlo girare come si deve su Firefox, sarebbe il benvenuto (per un programmatore penso sia veramente una scemenza).
Grazie per l'attenzione, un saluto a tutti!