Ingo: nutzen von alert (oder die pure verzweiflung...)

Hallo ihr Lieben,

zunächst nochmals vielen Dank an alle, die mir bei der letzten Frage so prompt geantwortet haben. Damals ging es um die Funktion von "columns", also, ob das mit irgendeinem Browser klappt. Heute wird die Frage noch schwieriger :)))

Folgendes Script:
function speichern()
{
var Heft = new Keks(document,"Anzahl_der_Heft");
Heft.load();
tna=Heft.nummeranzahl;
// Diese Variable muß je Heft angepasst werden
var q=0;
// Die Eingaben des Benutzers lesen
//TEXTMARKE
tabelle[q][2]=document.forms[0].elements[0].value;
//fertig

// Cookiewert zum Speichern zusammensetzen, tna=temporärvariable-nummer-anzahl
  if (tabelle[q][2] != 0)
  {
   if (tna != "") tna += "+";
   tna +=(tabelle[q][0] + "@" + tabelle[q][2]);
  }
Heft.nummeranzahl += tna;
Heft.store();
}

Wenn ich an der Stelle TEXTMARKE (dann natürlich ohne die "//") ein "alert("");" eingebe, dann kann ein anderes Script auf einer anderen Seite "tabelle[q][2]" richtig auslesen. Wenn ich auf das "alert" verzichte, kann das andere Script das nicht lesen. Dies ist der EINZIGE Unterschied. Ich habs doppelt und dreifach getestet.
Wenn ich (ohne alert) einen Reload der Seite (per Browser) durchführe und dann per Browser-Button auf das andere Script gehe, kann tabelle[q][2] auch ausgelesen werden.

Gibt es irgendeine geheime Funktion/Bedeutung/Wirkung von "alert", die dies verursachen kann? Ich habe das auslesende Script nicht mit abgedruckt, weil wirklich nur dieses alert den Unterschied macht.

Das ganze Problem tritt mit Netscape 4.7 auf. Der IE 5.0 arbeitet wie gewünscht auch ohne "alert".

Sollte hier jemand etwas wissen, wäre ich sehr dankbar.

Viele Grüße

Ingo

  1. Hoi Ingo

    Gibt es irgendeine geheime Funktion/Bedeutung/Wirkung von "alert", die dies verursachen kann? Ich habe das auslesende Script nicht mit abgedruckt, weil wirklich nur dieses alert den Unterschied macht.

    Leider weiss ich auch nicht genau woran das liegen kann. Ich hatte es jedenfalls auch einmal. Wenn ich mich recht erinnere war da was, dass ein Objekt (noch) nicht instanziert war...

    Jedenfalls will ich damit sagen, dass es im Ursprung IMHO nicht an alert liegt, bzw. alert nichts "verstecktes" macht. Es wird nur so sein, dass der _Programm-Unterbruch_ durch alert verursacht, etwas (Instanzen, Variabeln was weiss ich...) verändert (nicht verändert, aber "zeit hat" etwas zu machen..). Vermutlich würde es mit einer prompt-Box auch den gleichen Effekt geben...

    Alles ohne Gewähr, aber vielleicht hilft's!?
    cheers
    kaepten

    1. Hallo kaepten,

      erstmal vielen Dank für deine schnelle Antwort. Eine andere Dialogbox zu verwenden, hilft mir natürlich nicht weiter, denn das will ich meinen SeitenbesucherInnen nicht antun. Aber das mit der Zeit, daß könnte natürlich sein. Vielleicht probiere ich nochmal, einen setTimeout zu programieren.

      Da ich die Funktion über onUnload aufrufe, weiß ich auch nicht, wie ich stillschweigend einen Reload durchführen kann, ehe die Funktion abgeschickt wird. Na ja, ich werde wohl noch etwas tüfteln müssen.

      Nochmals vielen Dank

      Gruß   Ingo

      1. Hoi Ingo

        erstmal vielen Dank für deine schnelle Antwort. Eine andere Dialogbox zu verwenden, hilft mir natürlich nicht weiter, denn das will ich meinen SeitenbesucherInnen nicht antun. Aber das mit der Zeit, daß könnte natürlich sein. Vielleicht probiere ich nochmal, einen setTimeout zu programieren.

        Ich meinte natürlich nicht, dass es eine Lösung mit der Prompt-Box wäre. Nur, dass vermutlich der gleiche Effekt wäre wie mit alert (als Beweis, dass es nicht an alert als solches liegt)

        Rein Gefühlsmässig würde ich auch sagen, dass es mit einer Zeitschlaufe nicht funtzt. Ich weiss leider einfach nicht mehr, was bei mir damals das Problem war. Es geht drum das Script "anzuhalten" und das geschieht mit einer Zeitschleife ja nicht...

        Kannst mal einen Link aller Sourcen posten, damit man es mal in der Gesammtheit anschauen kann?

        cheers
        kaepten

  2. Ja, bei JavaScript hatte ich auch mal so eine Art von 'Nebenlaeufigkeitsproblem'. Man kann naemlich nicht wissen, welches JavaScript wann ausgefuehrt wird, und der Navi ueberlaesst das Sicherstellen der richtigen Ausfuehrungsreihenfolge dem Programmierer. Bevor also dieses Skript ausgefuehrt wird, solltest Du sicherstellen, dass alle noetigen Dinge bereits initialisiert sind. Setze z.B. in dem anderen Skript, das die noetigen Daten bereitstellt, nach der Ausfuehrung eine Variable auf einen bestimmten Wert, frage diesen im Skript ab und verschiebe die Ausfuehrung gegebenenfalls mit SetTimeout oder so solange, bis anhand der richtig gesetzten Variable festgestellt ist, dass alle Daten bereitstehen. Vielleicht bringt das was. Wenn's klappt, ist (wieder einmal) nicht der Navi schuld, sondern die 'Verbloedung' durch Microsoft (und dessen Run-Time Fehlerausbuegler).

    Viel Erfolg, Bio