Script browserübergreifend machen

pycak

Mitglied
Hallo Leute!

kann mir jemand diesen script browserübergreifend umschreiben?
Code:
function Fader(object, destOp, rate, delta) {
	if(!document.all)
		return
	if(object != "[object]") {
		setTimeout("Fader("+object+","+destOp+","+rate+","+delta+")",0);
		return;
	}

	clearTimeout(FaderTimers[object.sourceIndex]);

	diff = destOp - object.filters.alpha.opacity;
	direction = 1;
	if(object.filters.alpha.opacity > destOp) {
		direction = -1;
	}
	delta = Math.min(direction * diff,delta);
	object.filters.alpha.opacity += direction * delta;

	if(object.filters.alpha.opacity != destOp) {
		FaderObjects[object.sourceIndex] = object;
		FaderTimers[object.sourceIndex] = setTimeout("Fader(FaderObjects["+object.sourceIndex+"],"+destOp+","+rate+","+delta+")",rate);
	}
}

Danke
 
diese seite habe ich schon gesehen, die sachen gehen aber irgendwie nicht mit firefox. mit ie alles ok...

könnte man hier vielleicht eine abweichen machen wie z.b.:
if(object.style.MozOpacity <= 1) {CODE für mozilla} ?

aber welchen CODE?
 
Habe jetzt den Code etwas umgeschrieben, jedoch gibt es jetzt ein problem, dass firefox die variablen nicht als floats sondern als strings sieht.
beim object.style.MozOpacity += direction * delta2; sollte er 0.5+0.1=0.6 machen, statt dessen macht er 0.50.1 daraus. lösungsvorschläge?
 
Einen Lösungsvorschlag kann ich dir leider nicht bieten, dennoch möchte ich dich bitten, in deinen Beiträgen die Netiquette bzgl. der Groß- und Kleinschreibung zu beachten - siehe auch Svens Signatur.
 
Das bringt mich leider auch nicht weiter... Also, so weit bin ich jetzt, aber es funktioniert auch nicht so, wie es im IE funkt.:

Code:
if(object.style.MozOpacity <= 1) {
		if(destOp != 50 && destOp <= 99) destOp2 = Math.ceil(destOp/100);
		else destOp2 = runde(destOp/100,2);

		diff2 = runde(destOp2 - object.style.MozOpacity,2);
		direction = 1;
		cvari = object.style.MozOpacity;
		cvari = cvari*1;
		if(cvari > (destOp2*1)) { direction = -1; }
		delta2 = Math.min(direction * diff2, 0.1);
		cvari2 = direction * delta2;
		vari = cvari+cvari2;
		object.style.MozOpacity = vari;
		
		if(runde(object.style.MozOpacity*1,2) != destOp2) {
			FaderObjects[object.sourceIndex] = object;
			FaderTimers[object.sourceIndex] = setTimeout("Fader(FaderObjects["+object.sourceIndex+"],"+destOp2+","+rate+","+delta2+")",rate);
		}
	}

Kann es jemand evtl. verbessern, damit es so wie mit IE funkt?
 
Juhu! ich komme meinem Ziel immer näher. Folgendes habe ich gemacht und das funktioniert auch soweit ok:
Code:
if(object.style.MozOpacity <= 1.1) {
		var richtung = 1;
		if(object.style.MozOpacity > (destOp/100)) { richtung = -1; }
		
		a = object.style.MozOpacity*1;
		a += 0.1*richtung;
		object.style.MozOpacity = a;

		if(object.style.MozOpacity != (destOp/100)) {
			FaderObjects[object.sourceIndex] = object;
			FaderTimers[object.sourceIndex] = setTimeout("Fader(FaderObjects["+object.sourceIndex+"],"+destOp+","+0+","+0+")",20);
		}
	}

Es gibt nur noch einen Hacken und zwar, falls ich ein "gefadertes" Objekt in ein anderes "gefadertes" Objekt einfüge, wird das innere nicht auf Opacity = 1 hochgeschraubt, sondern verändert sein Wert um nur 0.1 (also von 0.5 auf 0.6). Ich glaube, dass es an Objekten liegt. Kann mir jemand bitte helfen, dieses Problem zu beheben?

thanks
 
Schon wieder Problem mit "opacity"

Hallo Welt!

Habe einen Script geschrieben, der ein Object langsam ein/ausblenden soll. Der Mozilla-Teil funktioniert, der IE-Teil nicht.

Code:
function call(richtung) {
	moz = 0.1*richtung;
	ie = 10*richtung;
// Mozilla-Teil
	if(document.getElementById("options").style.MozOpacity <= 1) {
		if(richtung == 1) { document.getElementById("options").style.visibility = "visible"; }
		if(richtung == -1 && document.getElementById("options").style.MozOpacity == 0.1) { document.getElementById("options").style.visibility = "hidden"; }
		a = document.getElementById("options").style.MozOpacity*1;
		a += moz;
		document.getElementById("options").style.MozOpacity = a;
		if(document.getElementById("options").style.MozOpacity != 0 && document.getElementById("options").style.MozOpacity != 1) {
			setTimeout("call("+richtung+")", 30);
		}
	}
// IE-Teil
	else {
		if(richtung == 1) { document.getElementById("options").style.visibility = "visible"; }
		if(richtung == -1 && document.getElementById("options").filters.alpha.opacity == 10) { document.getElementById("options").style.visibility = "hidden"; }

		document.getElementById("options").filters.alpha.opacity += ie;
		
		if(document.getElementById("options").filters.alpha.opacity != 0 && document.getElementById("options").filters.alpha.opacity != 100) {
			setTimeout("call("+richtung+")", 30);
		}
	}
}

Der IE verändert zwar den Wert der opacity des Objekts (ich habe es ausgeben lassen), man sieht aber nichts vom Effekt.

Tiefer im Quellcode steht dann:

Code:
<div id=options align=center style="visibility:hidden; filter:alpha(opacity=0); opacity:0;">

Die visibility-Sache funktioniert bei beiden Browsern.

Lösungsvorschläge?

Danke
 
Ich war mal so frei, der besseren Übersicht wegen dein neues Thema an das Bestehende anzuhängen, da es sich hierbei ja noch immer um ein "Fader-Script" handelt.
 

Neue Beiträge

Zurück