• Herzlich Willkommen!

    Nach der Schließung von inDiablo.de wurden die Inhalte und eure Accounts in dieses Forum konvertiert. Ihr könnt euch hier mit eurem alten Account weiterhin einloggen, müsst euch dafür allerdings über die "Passwort vergessen" Funktion ein neues Passwort setzen lassen.

    Solltet ihr keinen Zugriff mehr auf die mit eurem Account verknüpfte Emailadresse haben, so könnt ihr euch unter Angabe eures Accountnamens, eurer alten Emailadresse sowie eurer gewünschten neuen Emailadresse an einen Administrator wenden.

javascript - funktionsaufruf

Was mir auf jeden Fall mal auffällt: Die Zeile

while (breakpoints2.length > 0) { breakpoints2.pop(); }

ist sinnlos. Eventuell soll da eher eine 1 stehen, aber breakpoints2 ist bis dahin noch nicht benutzt/gefüllt worden.

Dann fällt mir folgendes auf

Code:
        if (breakpoints2[0][0] == i)
        {
          breakpoints.push(breakpoints2[0]);
          breakpoints2.shift();
        }

Das ist eigentlich überflüssig kompliziert, denn der Rückgabewert von shift ist ja gerade der Wert von [0]. Also müsste man in der Klammer als Einzeiler schreiben können "breakpoints.push(breakpoints2.shift());"


Und jetzt zu der letzten Schleife

Code:
      for (i=0; i <= Math.max(breakpoints1[breakpoints1.length-1][0],breakpoints2[breakpoints2.length-1][0]); i++)
      {
        if (breakpoints1[0][0] == i)
        {
          breakpoints.push(breakpoints1[0]);
          breakpoints1.shift();
        }
        if (breakpoints2[0][0] == i)
        {
          breakpoints.push(breakpoints2[0]);
          breakpoints2.shift();
        }
        if (breakpoints[breakpoints.length-1][0] == breakpoints[breakpoints.length-2][0])
        {
          breakpoints[breakpoints.length-2].value = [i,(breakpoints[breakpoints.length-2][1] + breakpoints[breakpoints.length-1][1])/2]
          breakpoints.pop();
        }
      }


Ich kann nur Hinweise geben, da ich nicht weiß, ob alles erfüllt ist, was ich mir denke. Lies erst zu Ende, ich habe einiges erst beim Schreiben verstanden.

1. Die for-Zeile geht davon aus, dass beide Arrays nach Größe sortiert sind, also das größte "i" ganz hinten im Array steht. Außerdem darf keines der Arrays leer sein, mehr dazu ganz unten.

Wenn wir das mal als eindimensionale Arrays sehen, könnten das folgende Zahlenreihen sein

breakpoints1 = (10, 20, 30, 40, 50)
breakpoints2 = (15, 20, 25, 30, 35)

Führt mich zu Punkt 2: gibt es gleiche Werte in den Arrays?

Aber der Reihe nach. Erster relevanter Durchlauf: i = 0

Erster if: schlägt nicht zu
Zweiter if: schlägt nicht zu
Dritter if: Fehler: Breakpoints.length()-2 ist nicht definiert, da breakpoints noch leer ist.

Nehmen wir an, wir umschiffen diese Hürde, dann verstehe ich den letzten if trotzdem nicht. Du vergleichst den letzten und vorletzten Wert, und falls diese gleich sind, weist du dem vorletzten irgendwas berechnetes zu und löschst den letzten. Aber gut, nehmen wir weiter an, das sei sinnvoll.

Nächster relevanter Durchlauf (eigentlich der erste wirklich relevante aufgrund der Werte): i = 10

Erster if: schlägt zu, ein push wird durchgeführt.
Zweiter if: schlägt nicht zu
Dritter if: immer noch Fehler:, das Array enthält nur einen Wert, Länge ist 1, Länge -2 ist -1. Ende negativ ganz schlecht.....

Beim Wert 15 kann das ganze erstmalig funktionieren, dem zweiten Array wird ein Wert entnommen und dem Ergebnis zugefügt. Letztes If schlägt nicht zu.

Beim Wert 20 schlagen beide Ifs zu, das Resultat erhält zwei mal den Wert 20, was du durch den letzten if irgendwie änderst. Ok, scheint also doch Sinn zu machen.

Die nachfolgenden sind uninteressant, bis der Wert 35 überschritten wird, also 36.

Erster if: schlägt nicht zu
Zweiter if: Fehler: Zugriff auf ein Array, das inzwischen durch Pop geleert wurde.
Dritter : egal

Alle weiteren Werte führen zu demselben Fehler. Es gibt aber noch den Sonderfall, das beide Max-Werte identisch sind, das scheint aber zu funktionieren.



Noch was: Ich weiß nicht, wie Javascript intern die Schleifenbedingung prüft: Wenn sie nur einmalig ganz zum Beginn der Schleife geprüft wird, ist alles in Ordnung. Wenn aber die Bedingungen mit Math.max bei jedem Durchlauf erneut ausgewertet wird, dann funktioniert das spätestens dann nicht mehr sinnvoll, wenn eines der Arrays leer ist.

Besser so:

Code:
var max1 = breakpoints1[breakpoints1.length-1][0] 
var max2 = breakpoints2[breakpoints2.length-1][0]
for (i=0, i<= Math.max(max1, max2), i++)
{...}

Dann muss nicht bei jedem Durchlauf auf array[length-1] zugegriffen werden.


Ich hoffe, das war jetzt alles verständlich.


Lös erst mal diese Probleme, dann stell die Fragen erneut. Ich weiß nicht, was sich dadurch schon beheben lässt.
 
Die Arrays in den Zeilen 5-7 zu leeren ist sinnlos, wenn Du sie davor mit new array() generierst. New array () erzeugt meines Wissens nach immer ein leeres Array.

Mich stört allerdings gleich vorne

for (i=100+SIAS-WSMprimär; i <= 175; i++) ...

Seit wann dürfen Variablennamen Umlaute enthalten? Sagt denn die Fehlerkonsole nichts dazu? Meiner Meinung nach wird WSMprimär bestenfalls nur mit 0 ausgewertet, sollte aber eigentlich entweder zum Scriptabbruch führen oder zu einer Fehlermeldung in der Konsole.

Dasselbe gilt für noch mehr Variablen in Deinem Script, die Umlaute enthalten.

Benutzt Du keinen Editor mit Syntaxhighlightning? Der sollte DIch auf sowas ja zumindest optisch hinweisen.

Und noch ein wenig Klugscheiss: Trenne alle Operatoren mit Leerzeichen vom restlichen Quelltext, das steigert die Lesbarkeit enorm.
Code:
for (i=100+SIAS-WSMprimär; i <= 175; i++)

vs.

for ( i = 100 + SIAS - WSMprimär; i <= 175; i++ )
 
Eventuell soll da eher eine 1 stehen, aber breakpoints2 ist bis dahin noch nicht benutzt/gefüllt worden.
ich fülle ungern arrays, um sie vor benutzung gleich wieder zu löschen :)
die zeile muss irgendwo beim verschieben/kopieren noch übrig gebleiben sein.

Führt mich zu Punkt 2: gibt es gleiche Werte in den Arrays?
es muss zumindest einen gleichen geben, ja nach einstellungen kanns auch mehrere geben.

Erster if: schlägt nicht zu
Zweiter if: schlägt nicht zu
Dritter if: Fehler: Breakpoints.length()-2 ist nicht definiert, da breakpoints noch leer ist.
der fall kann nicht eintretten. beide arrays müssen zumindest die angriffsdauer für 0 IAS beinhalten und daher werden im ersten durchlauf die ersten beiden if-schleifen ausgeführt und die nötigen zwei werte stehen schon in breakpoints.
hier sieht man auch leicht den sinn der letzten if-schleife. der erstschlag hat eine gewisse angriffsdauer für 0 IAS und der zweitschlag eine andere. da ich für 0 IAS (und andere werte mit breakpoint auf erst- und zweitschlag) aber nur einen wert als breakpoint ausgeben will, muss ich beide angriffsdauern zusammenfassen.

alle anderen einwände waren allerdings richtig, inklusve der schleifenprüfung. damit funktioniert der teil nun, daher vielen dank :)


Die Arrays in den Zeilen 5-7 zu leeren ist sinnlos, wenn Du sie davor mit new array() generierst. New array () erzeugt meines Wissens nach immer ein leeres Array.
die arrays hab ich global definiert (und hier einfach dazukopiert) und die funktion wird mehrfach aufgerufen, daher sind diese zeilen nötig.

bisher sind mit mit umlaufen keine probleme aufgefallen, aber ich werde demnächst genauer darauf achten. auch dir vielen dank :)


eine frage hätte ich zum abschluss allerdings noch. die zeile

breakpoints[breakpoints.length-2].value = [i,(breakpoints[breakpoints.length-2][1] + breakpoints[breakpoints.length-1][1])/2]

hat nie funktioniert, selbst mit konstanten zu speichernden werten nicht. funktioniert denn .value bei arrays bzw ist da noch irgendwas falsch? ich habs nun mit .splice() gelöst, aber es hätte mich trotzdem noch interressiert.

mfg
 
eine frage hätte ich zum abschluss allerdings noch. die zeile

breakpoints[breakpoints.length-2].value = [i,(breakpoints[breakpoints.length-2][1] + breakpoints[breakpoints.length-1][1])/2]

hat nie funktioniert, selbst mit konstanten zu speichernden werten nicht. funktioniert denn .value bei arrays bzw ist da noch irgendwas falsch?
Wenn ich mal von der Standard-Array-Mechanik ausgehe, dann sagt man doch sowas wie
a[7] = 10

um dem 8. Feld den Wert 10 zu geben. Was soll value denn in deiner Zuweisung bedeuten? Imho muss das da weg und dann funktioniert das auch. Allerdings ist mir auch der Ausdruck

[i, (breakpoints[breakpoints.length-2][1] + breakpoints[breakpoints.length-1][1])/2]

unklar. Was heißt denn a = [ 55, 88 ] in Javascript? Fehlt da auf der rechten Seite der Zuweisung vielleicht noch was?
 
stimmt, das wird schon am value liegen. "a = [55,88]" definiert ein array "a" und weißt diesem als erste werte 55 und 88 zu. ich habe im array breakpoints lauter arrays stehen, um für jeden einzelnen breakpoint das benötigte IAS mit der erreichten geschwindigkeit zusammen zu fassen.

bezüglich de rumlaute hab ich mal kurz gegoogelt und hab dies hier gefunden:
TIP: Vermeiden Sie Umlaute und Sonderzeichen (außer _) in Variablennamen.
ich werd daher mal sehen ob es so funktioniert. fals nicht, kann es ich jederzeit noch ändern.

nochmal danke, ich hoffe dies war nun meine letzte frage bezüglich javascrit :)

mfg
 
Prinzipiell kann Javascript wohl mit UTF8-Zeichen umgehen. Du musst allerdings bedenken, dass nicht jeder seinen Browser auf UTF8 eingestellt hat, weshalb es da durchaus Probleme geben kann, die du in deinem eigenen Test nicht ekennen kannst. Stell es lieber global um. Einmaliger Aufwand von 10 Minuten.
 
und welche umlaute muss ich dabei alle umändern? ich habe gerade alle umlaute durch ä ö und ü ersetzt. den "söldner" stellt er mir dann richtig dar, aber bei allen waffen hab ich dann diese zeichenketten anstatt der umlaute stehen.
die chars und söldner stehen in HTML in einer auswahlliste, die waffen stehen in einem array und werden mit javascript ausgelesen. muss ich letztere dann nicht ändern, oder einfach auf andere weise?

mfg
 
Es gibt da zwei Gesichtspunkte: Variablennamen und Darstellungen.

Variablennamen mit Umlauten sind gefährlich, wenn das Programm auf einem Rechner zum Einsatz kommt, der einen anderen Zeichensatz verwendet. Plötzlich wird der Ascii-Char ö nicht mehr mit einem Byte, sondern mit zweien dargestellt oder umgekehrt und das Programm kann den Variablennamen nicht mehr identifizieren.

Darstellungen betreffen alles, was vom user gelesen wird, wobei Werte einer Combobox auch beim späteren Vergleich im Programm Probleme bereiten können, je nachdem, wie das Ganze codiert ist. Im günstigsten Fall stellt der Browser das Zeichen als ? dar, im schlimmsten läuft einafch nix oder sieht besch... aus.

Deshalb gilt auch heutzutage immer noch, dass Umlaute/Sonderzeichen in der Programmierung nix verloren haben. Schlimm genug, dass sogar Betriebssystem-Tools unter Solaris (Sun-Unix-Betriebssystem) Probleme damit haben, obwohl das System offiziell seit Jahren UTF8 unterstützt. Wir verzichten bei uns sogar darauf, Kommentare mit Umlauten zu schreiben.
 
drago schrieb:
Es gibt da zwei Gesichtspunkte: Variablennamen und Darstellungen.

Variablennamen mit Umlauten sind gefährlich, wenn das Programm auf einem Rechner zum Einsatz kommt, der einen anderen Zeichensatz verwendet. Plötzlich wird der Ascii-Char ö nicht mehr mit einem Byte, sondern mit zweien dargestellt oder umgekehrt und das Programm kann den Variablennamen nicht mehr identifizieren.

Es geht da sogar noch weiter. ich weiß ja nicht, welchen Editor Du verwendest, jedoch sollte dieser den Quelltext als UTF-8 speichern, wenn Du Umlaute in UTF-8 im Quelltext drin stehen haben möchtest. Egal ob als Variablenname oder Inhalt. Denn wenn nicht, dann verwendet z.B. das Notepad den Zeichensatz windows-1252 und das ö dadrin ist eben kein UTF-8 ö, auch wenn Du das im HTML als Ausagabezeichensatz angegeben haben solltest und wird falsch dargestellt.
Und wenn dann ein User mit einem Linux oder BSD daherkommt kann es passieren, dass dessen Defaultwert ISO-8859-1 ist und die Zeichen werden schon wieder anders ausgegeben.

Die Reaktion auf falsch codierte Zeichen in Variablen und/oder Functionsnamen bei der Interpretation des Javascript-Codes ist einfach nicht vorhersagbar. Kann gut gehen, kann voll gegen den baum fahren.

Aus diesem Grund gibt es immer noch die Empfehlung den Source NICHT in UTF-8 zu schreiben, da der 7Bit-Ascii-Zeichensatz sowohl bei UTF-8 als auch bei ISO-8859-1 als auch bei Windows-1252 identisch ist. Deswegen keine Variablennamen mit Zeichen ausserhalb des 7-Bit-Ascii-Zeichensatzes und Sonderzeichen werden HTML-like maskiert also nicht ö sondern z.B. mit ö weil es zuverlässig funktioniert.


Deshalb gilt auch heutzutage immer noch, dass Umlaute/Sonderzeichen in der Programmierung nix verloren haben. Schlimm genug, dass sogar Betriebssystem-Tools unter Solaris (Sun-Unix-Betriebssystem) Probleme damit haben, obwohl das System offiziell seit Jahren UTF8 unterstützt. Wir verzichten bei uns sogar darauf, Kommentare mit Umlauten zu schreiben.

Ich habe schon mal mit russischen Programmierern zusammenarbeiten müssen. Wenn Dir dann die ersten Quelltexte mit kyrillischen Bezeichnungen unterkommen, dann wird es sehr schnell nicht mehr handhabbar (wobei ich glücklicherweise das noch lesen konnte). Von Arabisch (rechts nach links) oder fernöstlichen Sprachen ganz zu schweigen. Es hat schon seinen Sinn sich auf das gute alte 7-Bit-ASCII zu beschränken.
 
ich hab jetzt die umlaute aus den varaiblennamen gelöscht, den text als UTF-8 abgespeichert, im meta-tag UTF-8 als kodierung angegeben und ändere demnächst die umlaute in die html-schreibweise. damit sollte es dann keine probleme geben, oder? danke übrigens, hat mir sicher einiges an zeit bei der fehlersuche erspart.

und ich bräuchte nochmals eure hilfe. eigentlich bin ich schon fertig, bei mir im FF geht alles perfekt. nur der dämliche IE versteht meinen code nicht...

Code:
  while (document.getElementsByName("skill")[0].hasChildNodes()) document.getElementsByName("skill")[0].removeChild(document.getElementsByName("skill")[0].firstChild);
  var optgroup1 = document.createElement("optgroup");
  var optgroup2 = document.createElement("optgroup");
  optgroup1.label = "native Angriffe";
  optgroup2.label = "Fremdfertigkeiten";

  switch (document.myform.char.value)
  {
    case "0":
      neuElement = new Option(fertigkeiten[0][0],fertigkeiten[0][1]);
      optgroup1.appendChild(neuElement);
      if (document.myform.charform.value == 0)
      {
        if ((waffen[document.myform.waffe.value][4] == 2) || (waffen[document.myform.waffe.value][4] == 3))
        {
          neuElement = new Option(fertigkeiten[1][0],fertigkeiten[1][1]);
          optgroup1.appendChild(neuElement);
        }
        if (waffen[document.myform.waffe.value][4] == 1)
        {
          neuElement = new Option(fertigkeiten[4][0],fertigkeiten[4][1]);
          optgroup1.appendChild(neuElement);
        }
        if ((waffen[document.myform.waffe.value][4] == 2) || (waffen[document.myform.waffe.value][2] == 5))
        {
          neuElement = new Option(fertigkeiten[2][0],fertigkeiten[2][1]);
          optgroup1.appendChild(neuElement);
          neuElement = new Option(fertigkeiten[3][0],fertigkeiten[3][1]);
          optgroup1.appendChild(neuElement);
          neuElement = new Option(fertigkeiten[5][0],fertigkeiten[5][1]);
          optgroup1.appendChild(neuElement);
        }
        document.myform.skill.appendChild(optgroup1);

        if (waffen[document.myform.waffe.value][5] == 1)
        {
          neuElement = new Option(fertigkeiten[24][0],fertigkeiten[24][1]);
          optgroup2.appendChild(neuElement);
          document.myform.skill.appendChild(optgroup2);
        }
      }
      if (document.myform.charform.value > 0) document.myform.skill.appendChild(optgroup1);
      break;
ich erzeuge und benenne ein optgroup-element, hänge neu erzeugte option-elemente daran und hänge dann das optgroup an meine auswahlliste. beim IE werden die optgroup-elemente wie gewünscht angehängt, die option-elemente sind ebenso anwählbar und liefern den richtigen wert - nur wird der text nicht angezeigt. ich hab schon ein bischen gegoogelt, doch leider nichts brauchbares dazu gefunden. habt ihr eine idee, wie ich dies umschreiben könnte, sodass es auch de IE versteht?

oder alternativ dazu, gibt es eine möglichkeit abzufragen, welchen browser der anwender benutzt? sprich könnte ich zwei funktionen machen, eine für den IE und eine für alle anderen browser?

und noch eine eigenheit des IE gibt mir zu denken. ich habe beispielsweise folgende textzeile im programm:

Code:
document.myform.AnzMax.value = null;
damit lösche ich die zuvor gesetzte "weiteres IAS sinnlos" meldung, funktioniert beim FF fehlerlos. der IE allerdings gibt mir kein lehres feld aus, sondern schreibt wirklich "null" hin, was ja nicht unbedingt so gedacht war. muss ich dann den ausdruck gegen "" austauschen und kann es dabei irgendwelche probleme geben?

mfg
 
Browser abfragen guckst du da

Leerer String könnte die Lösung sein, musst du probieren. Kann sein, dass "null" nicht im IE implementiert ist.
 
danke für die seite, dann werd ich es so machen (wer den IE nutzt ist halt selbst schuld ^^).

beim durchlesen ist mir neulich auch dies aufgefallen, eine abfrage ob ein objakt bekannt ist. gibt es sowas denn auch für methoden, sodass ich abfragen kann, ob der browser die methode "hasChildNodes()" kennt?

mfg
 
Du kannst höchstens analog zum Beispiel if (xxx.image) für Objekte das ganze analog für eine Methode if (abc.method()), eventuell ohne Klammern hinter dem Methodennamen aufrufen und gucken, was passiert. Ich würde aber auf nein tippen, sonst hätte die Seite das wohl erwähnt.

Ich würde aber nicht für jede Methode prüfen, ob sie da ist. Das bläht nur unnötig den Code auf. Wer einen unsittlichen Browser nutzt (ich meine nicht iE, sondern Netscape 4 oder so was) muss halt damit leben.
 
Ich würde Javascript Version 1.5 als Messlatte ansetzen und alle älteren ans Updaten erinnern.

Das wären Netscape 6, Mozilla 0.6, IE 5.5 etc. bzw. Nachfolger.

Die unterstützte Javascriptversion läßt sich meines Wissens nach nicht direkt abfragen, aber verwende einfach eine Function/Methode ( z.B. toFixed() ), die es erst seit 1.5 gibt . So deckst Du auch gleich JScript beim IE mit ab ohne großartige Browserweichen zu basteln.

Gründe gibts viele, Wenn Du willst können wir gerne einen tagelnagen Thread dafür eröffnen :-) Nebebei hast Du dadurch wenigstens auch noch CSS 1 in halbwegs funktionstüchtiger Umsetzung erzwungen.
 
wenn ich javascript 1.5 als vorraussetzung zum funktionieren des calcs nehme, kann ich mir eine abfrage doch irgendwie ersparen, da manche funktionen erst ab JS 1.5 verfügbar sind und der calc für zu alte browser damit onehin nicht funktioniert.

ich hätte aber mal eine frage hierzu , es scheint mit safari probleme zu geben. offenbar funktioniert javascript nicht, denn die auswahllisten werden nicht generiert. habt ihr eine idee, woran dies liegen könnte?

mfg
 
TitanSeal schrieb:
wenn ich javascript 1.5 als vorraussetzung zum funktionieren des calcs nehme, kann ich mir eine abfrage doch irgendwie ersparen, da manche funktionen erst ab JS 1.5 verfügbar sind und der calc für zu alte browser damit onehin nicht funktioniert.

Ist eher Service am Kunden. Man kann meines Wissens nach eine Mindestversion leider nicht erzwingen. Einer der gewichtigeren Gründe, warum ich javascript partout vermeide. Es sieht nicht gut aus, wenn der Interpreter die Fehlerkonsole aufpoppen läßt. Dann lieber austesten und einen dezenten Hinweis programmieren.

ich hätte aber mal eine frage hierzu , es scheint mit safari probleme zu geben. offenbar funktioniert javascript nicht, denn die auswahllisten werden nicht generiert. habt ihr eine idee, woran dies liegen könnte?

Abgesehen davon, das Safari ohnehin ein Thema für sich ist:

- Womit entwickelst Du überhaupt? Benutzt Du eine IDE?
- Hast Du alle Fehler im Script beseitigt, auch alle Warnungen? Die Browser reagieren unterschiedlich tolerant auf Warnungen und Fehler, manche auch zu tolerant. Der nächste Grund, warum ich javascript ablehne.
- Bist Du Dir sicher ausschließlich Befehle entsprechend ECMAScript verwendet zu haben oder greifst Du vielleicht irgendwo auf JScript-"Erweiterungen" zurück? JScript werden von anderen Browsern als dem IE nur marginal unterstützt.
 
ich hab zwei IDE ausprobiert, konnte mit beiden allerdings nichts anfangen. daher arbeite ich einfach nur mit einem editor (ChSciTE). fehler und warnungen werden mir demnach nicht angezeigt.
ich habe eigentlich bei allen befehlen darauf geachtet, dass sie in allen browsern funktionieren. aber angenommen ein befehl könnte von safari nicht interpretiert werden, würde dann wie in diesem beispiel der gesammte javascript-code ignoriert werden?

mfg
 
TitanSeal schrieb:
ich hab zwei IDE ausprobiert, konnte mit beiden allerdings nichts anfangen. daher arbeite ich einfach nur mit einem editor (ChSciTE). fehler und warnungen werden mir demnach nicht angezeigt.
ich habe eigentlich bei allen befehlen darauf geachtet, dass sie in allen browsern funktionieren. aber angenommen ein befehl könnte von safari nicht interpretiert werden, würde dann wie in diesem beispiel der gesammte javascript-code ignoriert werden?

mfg

Ohne IDE wird bei anderen Programmiersprachen auch nicht einfacher, da würde ich vielleicht mal Eclipse anschauen? Und vor allem ein bischen Zeit investieren.

Fehlerkonsole tut es zur Not die vom Feuerfuchs (Extras --> Fehlerkonsole)

Und wie der Interpreter auf fehlerhaften Code reagiert wirst Du wohl bei jeweiligen Hersteller nachschlagen müssen.
Außerdem kommt noch die Entscheidung zwischen Warnung und Fehler hinzu. Warnungen sind nur Hinweise, das etwas nicht dem Standard in der erwarteten Form entspricht. Das kann, muß aber nicht zu einem Fehler führen. Normalerweise setzen alle Browser den Code bei einer Warnung fort.
Fehlermeldungen werden anders behandelt. Bei manchen Fehlerkategorien versucht z.B. der Firefox weiterzuarbeiten und den restlichen Code zu interpretieren, bei manchen bricht er sofort ab. Ich weiß auch nicht wann er wie reagiert und ob es da überhaupt eine andeutungsweise volständige Übersicht darüber gibt. Und beim Safari weiß ich es schon gar nicht.

Die einzige Lösung, die Dir bleibt, ist testen testen testen und alle Fehler sowie möglichst auch jede Warnung beseitigen.

Ich muss gestehen, das ich nicht mal weiß, ob der Safari überhaupt ECMA vollständig unterstützt oder ob Apple wie Mickysoft mit dem IE eine eigene Suppe kocht. Er identifiziert sich jedenfalls als Gecko-Engine 5.0, also sollte(!!!) er eigentlich keinerlei Probleme mit javascript 1.5 haben.

Wenn von Javascript 1.5 geredet wird, dann ist damit in der Regel der ECMA-Script-Standard (ECMA-262 Version 3) gemeint. Nur so als Hinweis. Ich erwähne das deswegen, weil z.B. manche Referenzhandbücher sich eben nicht auf diesen Standard stützen sondern z.B. auf JScript und das wäre im Zusammenspiel vmit dem Safari schon kritisch.
 
ich habe eclipse bereits, aber ich wüsste nicht, wie ich damit umgehen soll. bisher hab ich nur etwa 1500 warnungen bekommen, weil irgendwelche variablen oder schlüsselwörter (zb "var") angeblich falsch buchstabiert seien. die fehlerkonsole hab ich bereits probiert, die zeigt weder fehler noch warnungen an.

wenn ich safari selbst hätte, würde ich einfach alles durchtesten um zu sehen, woran es liegt. da ich den browser aber nicht habe und die version für windows angeblich noch sehr fehleranfällig ist, geht das nicht.

mfg
 
ich habe mir mal den Safari für Windows installiert und Deinen Calculator dort getestet. Du hast eine dickes problem mit Deinem "Webspace"!

ein Schnipsel aus dem Anfang Deiner Seite:
Code:
<div id="z2947878a" style="text-align: center; margin: 0px; padding: 0px;" align="center"></div>
<script src="http://ads.tripod.lycos.de/ad/google/framejs.php?
rnd=z2947878a&ss=2dd5cdf5&gg_bg=&gg_template=&mkw=&cat=noref">
</script>


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<title>Calculator Angriffsgeschwindigkeit</title>

Lycos knallt Dir eine Werbung rein und zwar noch vor Deiner doctype-definition!
Ausserdem macht Lycos das ganze scheinbar ohne Zeichensatzdefinition (siehe ) und der Safari stolpert garantiert darüber.
Er berechnet zwar etwas, ob das aber jetzt richtig ist habe ich nicht überprüft.

Zum Austesten solcher Sachen (und auch zum benutzen) ist so ein gratis-schrott-space völlig unbrauchbar. Webspace ohne Werbung und freiem Zugriff gib es ab 1 Euro im Monat. Wenn man da etwas machen will, sollte man diese "Investition" schon tätigen. Dann passiert so etwas nicht.
 
Zurück
Oben