IE-Kompatibilitätsskript?

Servus,

kennt jemand möglicherweise ein Script, mit dem JS-Code auch im Internet Explorer funktioniert?
Es geht um folgendes: Ich hab einen Ticker geschrieben. Dieser funktioniert in allen gängigen Browsern (Chrome; Firefox3.6; Safari; Opera 10.5x), außer im IE (wie häufig). Da ich aber im IE überhaupt nicht durchblick, kann ich meinen Code fast nicht anpassen.

Ideen?

grtz
michi

Servus,

kennt jemand möglicherweise ein Script, mit dem JS-Code auch
im Internet Explorer funktioniert?

Ah das wäre gut gell. Ich glaub das ist reines Wunschdenken.

Es geht um folgendes: Ich hab einen Ticker geschrieben. Dieser
funktioniert in allen gängigen Browsern (Chrome; Firefox3.6;
Safari; Opera 10.5x), außer im IE (wie häufig). Da ich aber im
IE überhaupt nicht durchblick, kann ich meinen Code fast nicht
anpassen.

Ideen?

den code posten ? das wäre doch mal eine Idee.

Oder meinst du wir haben direct zugriff auf deinen Computer ?

Auch können wir nicht so pauschal sagen was wie unterschiedlich ist beim IE.

grtz
michi

Hab ich mir fast schon gedacht. Hier der Code mit Beispiel-Werten (Angegebene Dateien müssen nicht existieren)

var links = ['http://google.de','http://google.de'];
var texte=[' o y ',' asdas xyz '];
var bilder = ['ticker/18105-gefangene-steinpilze.png','ticker/18283-die-treppe-hoch.png'];
var wartezeit=5000;
var breite = 100;
var hoehe=100;

//Code
var id = "ticker\_"+(Math.round(Math.random()\*32768));
document.write(' ');
var mainDiv = document.getElementById(id);
mainDiv.innerHTML = " Daten werden geladen, bitte warten...";
var bildergeladen = [];
var prozent = 0;
var tmp = null;
var block = false;

function inArray(array,needle){
 for(var i in array){
 if(array[i] == needle)
 return true;
 }
 return false;
}

function ladenbeenden(n,ok){
 if(inArray(bildergeladen,n)==false){
 bildergeladen[bildergeladen.length] = n;
 if(ok == false){
 var newnode = document.createElement("div");
 newnode.style.display = "inline-block";
 newnode.style.width = breite-2+"px";
 newnode.style.height = hoehe-2+"px";
 var zufallgrauwert = 55+Math.round(145\*Math.random());
 newnode.style.backgroundColor = "rgb("+zufallgrauwert+","+zufallgrauwert+","+zufallgrauwert+")";
 newnode.style.borderRadius = "7px";
 var oldnodes = mainDiv.childNodes[0].childNodes[n].childNodes;
 mainDiv.childNodes[0].childNodes[n].replaceChild(newnode,oldnodes[0]);
 }
 if(bildergeladen.length == bilder.length){
 mainDiv.childNodes[0].childNodes[0].style.width = (mainDiv.offsetWidth-((bilder.length-1)\*breite))+"px";
 mainDiv.innerHTML = mainDiv.childNodes[0].innerHTML;
 if(wartezeit\>0){
 setInterval("auto\_wechsel();",wartezeit-(-1000));
 }
 }
 }
}

function auto\_wechsel(){
 if(block==false)
 ubergang(1);
}

function gehezu(n){
 if(n==0)
 location.href = links[n];
 else
 ubergang(n);
}

function ubergang(n){
 prozent=0;
 if(n!=1){
 var tmp\_c = mainDiv.childNodes[1];
 mainDiv.replaceChild(mainDiv.childNodes[n],mainDiv.childNodes[1]);
 mainDiv.appendChild(tmp\_c);
 }
 tmp = setInterval("\_ubergang("+n+");",10);
}

function \_ubergang(n){
 if(prozent=33){
 if(prozent == 33){
 mainDiv.childNodes[0].style.opacity = "0.0";
 mainDiv.childNodes[0].style.filter = "alpha(opacity=0)";
 mainDiv.childNodes[0].style.width = "0px";
 }
 mainDiv.childNodes[1].style.marginLeft = (1-(((prozent-33)\*3)/100))\*(mainDiv.offsetWidth-(bilder.length-1)\*breite)+"px";
 mainDiv.childNodes[1].style.width = (parseInt(mainDiv.childNodes[1].style.marginLeft)=66){
 if(prozent==66){
 mainDiv.appendChild(mainDiv.childNodes[0]);
 mainDiv.childNodes[bilder.length-1].style.width = breite+"px";
 mainDiv.childNodes[0].style.marginLeft = "0px";
 mainDiv.childNodes[0].style.width = (mainDiv.offsetWidth-((bilder.length-1)\*breite))+"px";
 }
 mainDiv.childNodes[0].childNodes[1].style.opacity = ((prozent-66)\*3)/100;
 mainDiv.childNodes[0].childNodes[1].style.filter = "alpha(opacity="+((prozent-66)\*3)+")";
 mainDiv.childNodes[bilder.length-1].style.opacity = ((prozent-66)\*3)/100; 
 mainDiv.childNodes[bilder.length-1].style.filter = "alpha(opacity="+((prozent-66)\*3)+")"; 
 }
 if(prozent == 100){
 mainDiv.childNodes[0].childNodes[1].style.filter = "alpha(opacity=100)";
 mainDiv.childNodes[0].childNodes[1].style.opacity = 1.0;
 mainDiv.childNodes[bilder.length-1].style.filter = "alpha(opacity=100)";
 mainDiv.childNodes[bilder.length-1].style.opacity = 1.0;
 clearInterval(tmp);
 var nt = [];
 var nl = [];
 var nb = [];
 for(var i in texte){
 for(var j in mainDiv.childNodes){
 var cr = mainDiv.childNodes[j];
 if(cr.innerHTML !== undefined){
 if(texte[i] == cr.childNodes[1].innerHTML){
 nt[j] = texte[i];
 nl[j] = links[i];
 nb[j] = bilder[i];
 }
 mainDiv.childNodes[j].setAttribute('onclick',"gehezu("+j+");");
 }
 }
 }
 texte = nt;
 bilder = nb;
 links = nl;
 }
 prozent++;
}

isDefined = function(variable){ 
 return this[variable] === undefined ? false : true;
};

for(var i in texte){
 mainDiv.childNodes[0].innerHTML += ' '+texte[i]+' ';
}
mainDiv.style.height = hoehe+"px";
mainDiv.style.overflow = "hidden";

grtz
michi

Hallo,

ich habe mir den Code jetzt nicht im Detail angeschaut, weil es einfach zu viel war, aber es könnte gut sein, dass Du an einer bestimmten Stelle ein Komma zuviel oder zuwenig hast.
Eventuell beendest Du eine Zeile auch nicht mit einem Semikolon.

Das sind oft Fehlerquellen im IE, weil dieser sich dort nicht besonders gnädig zeigt oder gerne auch das, eigentlich erlaubte, weglassen von Semikolon als Problem sieht.

Hast Du mal beim FireFox versucht mit dem Plug-In Firebug oder in der Fehlerkonsole nach fehlern und Warnungen zu suchen?

Eine Möglichkeit ist auch Framework wie JQuery zu benutzen, das verkürzt den Code und erspart einem oft Probleme mit verschiedenen Browsern.

Danke für den Tipp mit JQuery, werde ich mir zwar mal ansehen, aber ist für diesen Zweck übertrieben, da ich nur dieses eine Skript auf der Seite hätte.

Getestet hab ich das Skript mit allen gängigen Browsern, inklusive verfügbarer Konsolen. In Opera ist das die integrierte, in FF sind es bei mir die Web-Developer-Toolbar und Firebug (schaut dem aus Opera gleich), im Chrome/-ium gibts integriert etwas IE-ähnliches (vom Aussehen) und im IE mit der integrierten.
Komischerweise zeigt die Konsole bei mir im IE keine Fehler, der Browser selber zeigt aber überhaupt nicht, was er soll.

grtz
michi

hier mal zu filtern und opaticty unterschiede FF und IE
http://www.w3schools.com/Css/css_image_transparency.asp

vielleicht findest du ja da was

Also bei der Menge an Code kann man locker JQuery nutzen, das ganze ist sehr schlank.
Ich benutze es mittlerweile für alles, weil dann aus 50 Zeilen schnell mal 15 werden.

Dass Dir die Konsole im IE keine Fehler zeigt wenn der IE ausspuckt ist kein Wunder.

Viel Glueck noch beim suchen, der IE ist leider nunmal eine Pest

hi michi,

mich wundert es, dass es keine fehlermeldung geben soll.
ein „… is NULL“ und nicht nur im IE wird durch die write-anweisung mit der leeren div erzeugt.

gruß
klaus