Christian Sturm: IE Kompatibilität und Sanduhr... Bitte um Hilfe!

Hallo, nachfolgender Code funktioniert im FF aber unter IE6 und 7 wird anstatt "Theorie und Praxis" nur "undefined" ausgegeben.

Ich wäre wirklich heil froh, wenn sich jemand mal die kompatibilitätsaspekte ansehen könnte.

Weiterhin macht mir etwas sorgen, das im FF nach dem laden und ausführen der Funktion die Sanduhr bestehen bleibt....

Ich wäre so glücklich wenn mir jemand helfen könnte, ich bin hiermit einfach eindeutig überfordert.

Lieber Gruß
Chris

<HTML>
<HEAD>

<SCRIPT LANGUAGE="JavaScript">

function randomise(text){
var words=text;
var spacer="";

var stringi="";
var colourscheme=new Array("0","F")
for(var time=0;time<=(words.length-1);time++){
if(words[time]==" "){stringi+=" "}
if(words[time]!=" "){

var c1=Math.round(Math.random()*(colourscheme.length-1));
var c2=Math.round(Math.random()*(colourscheme.length-1));
var c3=Math.round(Math.random()*(colourscheme.length-1));
var size=4+Math.round(Math.random()*0);
stringi+="<font color="#"+colourscheme[c1]+colourscheme[c1]+colourscheme[c2]+colourscheme[c2]+colourscheme[c3]+colourscheme[c3]+"" size=""+size+"">"+words[time]+"</font>"+spacer+"";
}
}

document.write(stringi);
}
</SCRIPT>

</HEAD>

<BODY onload="JavaScript:randomise('Theorie und Praxis');" color="#cccccc">

</BODY>
</HTML>

  1. Hi,

    ich vermute mal, Du hast Dir das Script irgendwo runtergeladen? Schmeiss es lieber gleich wieder weg
    und such Dir was anderes. Was willst Du überhaupt machen?

    LG

    1. Die Überschriften einer Kinderzahnarztseite sollen Warnerbrothers-ähnlich in bunt auf dem Bildschirm erscheinen.

      Ich setzte hier und da nen bissel Ajax ein, und nutze den Schnipsel asschließlich für die Stringgenerierung der Überschrift.

      Da die Internetseite knapp 180 Überschriften hat, bin ich auf ein generierendes Script angewiesen weil mir das niemand auf der Welt in Handarbeit bezahlt.

      Lieber Gruß
      Chris

  2. Lieber Christian,

    ich kann Karin nur zustimmen: Schmeiß das Script weg!

    Zu Deinem Problem:
    Wenn die Methode document.write() nach dem vollständigen Laden eines Dokumentes ausgeführt wird (und du lässt mittels onload genau das tun), dann löscht sie das gerade geladene Dokument und ersetzt es mit ihrer Script-Ausgabe. Diese Script-Ausgabe ist aber mitnichten ein HTML-Dokument. Außerdem wird das Dokument nicht korrekt geschlossen (document.close()), sodass der Browser ständig auf weitere Daten wartet.

    Das Script zeigt an verschiedenen Stellen, dass es schon einige Jahre auf dem Buckel hat. Wenn Du so sehr daran hängst, dass ein Teil Deines Dokuments in schillernden und zufällig ausgewählten Farben dargestellt wird, dann tue das bitte nicht mit <font>-Tags (werden vom Script generiert), sondern mittels <span> und style-Attributen. Desweiteren sollte Dein Script diese SPAN-Elemente brav über DOM-Methoden in das Dokument einhängen, anstatt mittels document.write() alles zu zerstören. Dann ist es auch wieder "kompatibel".

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
  3. Es war das fehlende Semikolon hinter der var Zeile.

    Die Funktionalität in den Kundengeforderten Zielbrowsern ist gegeben.
    Opera, Netscape, FF, IE6, IE7

    Als jemand der von Zeit lebt, werde ich kein Semikolon gegen eine neugestaltung des Skripts setzen.

    Sicherlich HABT IHR RECHT, aber ist ja mit dem IE8 dann sowieso alles wieder hinfällig... dann fangen wir wieder an workarounds zu progen.
    Und mit Boxmodelhacks und ähnlichem unsere so favorisierten Standards butterweich zu faken.

    Document.wirte war nur eine Ausgabe, hätte auch Alert oder ähnliches nehmen können. Aber ich verstehe jetzt daß das Sanduhrproblem daraus resultierte. Da ich viel mit php mache, habe ich write dem echobefehl
    zu nahegesetzt.

    Danke für die Ansätze.

    Lieber Gruß
    Chris