Anton: window.setTimeout

Moin!

Folgender Befehler wird im IE genommen und im FF &co leider nicht:

window.setTimeout('alert();', 1);

Verstehe nicht ganz wo das Problem ist, bei window.setTimeout... ?!

Gruß

Anton

  1. Hallo,

    window.setTimeout('alert();', 1);
    Verstehe nicht ganz wo das Problem ist, bei window.setTimeout... ?!

    wohl eher beim leeren alert(); hast du mal versucht an alert() etwas zu übergeben was der browser dann anzeigen könnte? also alert("foo") zum Beispiel?

    Grüße
    Jeena Paradies

    1. wohl eher beim leeren alert(); hast du mal versucht an alert() etwas zu übergeben was der browser dann anzeigen könnte? also alert("foo") zum Beispiel?

      Ja, davon koennt ihr ausgehen. Denn ich möchte bestimmt nicht irgendwas alerten nach einiger Zeit, sondern eine Funktion aufrufen. Diese möchte ich euch aber ersparen... da können sich auch Fehler reinschleichen, wenn man etwas schnell zur Vereinfachung tippt. ;-)

      setTimeout("alert('test');", 100);

      klappt nicht

      setTimeout("alert('test');", 10);

      klappt.

      1. setTimeout("alert('test');", 100);

        klappt nicht

        Was heißt das?

        Struppi.

        --
        Javascript ist toll (Perl auch!)
        1. setTimeout("alert('test');", 100);

          klappt nicht

          Was heißt das?

          Ehm, jo, es funktioniert nicht? Er führt den alert leider nicht aus.

          Ich glaube es liegt dann doch an den Rahmenbedingungen, da dieser Befehl so in einer normalen HTML-Datei funktioniert.

          Die ganze Geschichte funkioniert nicht (also er führ den alert nicht aus) bei einem body  der contenteditable und designmode='on' hat.
          Kann es damit irgendwas zu tun haben?

          Gruß

          Anton

          1. setTimeout("alert('test');", 100);

            klappt nicht

            Was heißt das?

            Ehm, jo, es funktioniert nicht? Er führt den alert leider nicht aus.

            Ich glaube es liegt dann doch an den Rahmenbedingungen, da dieser Befehl so in einer normalen HTML-Datei funktioniert.

            eben.

            Die ganze Geschichte funkioniert nicht (also er führ den alert nicht aus) bei einem body  der contenteditable und designmode='on' hat.
            Kann es damit irgendwas zu tun haben?

            Könntest du mal versuchen Fehlern nachzugehen und zu beschreiben und wenn du Hilfe möchtest, wäre es sinnvoll Minimal Beispiele, die dein Problem demonstrieren, zu zeigen.

            Struppi.

            --
            Javascript ist toll (Perl auch!)
            1. Die ganze Geschichte funkioniert nicht (also er führ den alert nicht aus) bei einem body  der contenteditable und designmode='on' hat.
              Kann es damit irgendwas zu tun haben?

              Jo frage ich mich auch, eignetlich nicht, aber es ist wohl so offensichtlich.

              Könntest du mal versuchen Fehlern nachzugehen und zu beschreiben und wenn du Hilfe möchtest, wäre es sinnvoll Minimal Beispiele, die dein Problem demonstrieren, zu zeigen.

              Den Fehler kann ich leider nicht nachgehen, aber mein Beispiel einfach posten:

              function setSTRG(Ereignis ) {
                if (!Ereignis) Ereignis = window.event;
                if (Ereignis.which) {
                  Tastencode = Ereignis.which;
                }
                else if (Ereignis.keyCode) {
                  Tastencode = Ereignis.keyCode;
                }
                if (Tastencode==17){
                  lastTastenCode=17;
                }
                else if (lastTastenCode!=17) {
                  lastTastenCode = 0;
                }
              }

              function unsetSTRG(Ereignis) {
                if (!Ereignis) Ereignis = window.event;
                if (Ereignis.which) {
                  Tastencode = Ereignis.which;
                }
                else if (Ereignis.keyCode) {
                  Tastencode = Ereignis.keyCode;
                }
                if (Tastencode==17) {
                  setTimeout('alert("NED STRG")';, 1000);
                }
              }

              <body onkeyup="unsetSTRG();" onkeydown="javascript:setSTRG();" bgcolor='#FDF1C7' contenteditable onLoad="document.designMode = 'on';" style = "' + myStyle + '">'

              if(document.addEventListener) // für Moz, reicht net für IE
              {
              document.addEventListener("keyup", unsetSTRG, true);
              document.addEventListener("keydown", setSTRG, true);
              }

              Das gepostete ist der meiste Code von der HTML-Seite die in ein IFRAME "projeziert" wird.

              Seht ihr da nen Grund für das Verhalten von Mozilla?

              1. Hallo Anton!»»

                Die ganze Geschichte funkioniert nicht (also er führ den alert nicht aus) bei einem body  der contenteditable und designmode='on' hat.
                Kann es damit irgendwas zu tun haben?

                if (Tastencode==17) {
                    setTimeout('alert("NED STRG")';, 1000);
                  }

                Seht ihr da nen Grund für das Verhalten von Mozilla?

                Vielleicht würdest Du uns, wenn Du Fragen stellst, einfach GENAU den Code liefern, den Deine Seite enthält, oder uns einfach einen URL zu den _vollständig_ kopierten Seiten liefern? Denn das,w as Du hier geliefert hast, kann auch im IE nicht funktionieren, da jeder Browser in der Zeile des SetTimeouts ein ")" erwarten würde.

                Deine Fehlerbeschreibungen gleichen dem Blick in die Glaskugel.

                Schönen Gruß

                Afra

                1. Vielleicht würdest Du uns, wenn Du Fragen stellst, einfach GENAU den Code liefern, den Deine Seite enthält, oder uns einfach einen URL zu den _vollständig_ kopierten Seiten liefern? Denn das,w as Du hier geliefert hast, kann auch im IE nicht funktionieren, da jeder Browser in der Zeile des SetTimeouts ein ")" erwarten würde.

                  Da hab ich mich beim verändern vertippt, da ich ja nicht unbedingt etwas alerten will, sondern eine andere Funktion aufrufen. Jedoch wenn der Alert schon nicht geht, liegt der Fehler nicht in der Funktion die ich benutze.Wenn es eine Fehlermeldung gäbe, würde ich vermutlich nicht mal diesen Thread erstellt haben.

                  Also der Tippfehler ist nicht der Fehler, auch mit:

                  setTimeout('alert("NED STRG");', 1000);

                  funktioniert es nicht.

                  Gruß

                  Anton

                  1. Hi,

                    Da hab ich mich beim verändern vertippt, da ich ja nicht unbedingt etwas alerten will, sondern eine andere Funktion aufrufen. Jedoch wenn der Alert schon nicht geht, liegt der Fehler nicht in der Funktion die ich benutze.Wenn es eine Fehlermeldung gäbe, würde ich vermutlich nicht mal diesen Thread erstellt haben.

                    Nur mal so eine Idee (nicht nachgeprüft).

                    Ein Alert ist eine Art Popup.
                    Wenn zwischen dem Klick des Users und dem tatsächlichen Erzeugen des Popups (alert) eine gewisse Zeitspanne liegt, könnte man es so sehen, daß das Popup ein nicht vom User angefordertes ist (es gibt keinen direkten Zusammenhang zwischen Useraktion und Popup-Erzeugung).
                    Das Popup könnte also, weil nicht angefordert, vom Popupblocker blockiert werden.

                    Mach mal ne andere Aktion, z.B. document.body.style.backgroundColor = "fuchsia" oder ähnliches.

                    cu,
                    Andreas

                    --
                    Warum nennt sich Andreas hier MudGuard?
                    Schreinerei Waechter
                    O o ostern ...
                    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  2. Hallo Anton!

    Wenn Du dich mit den Grundlagen von JavaScript auseinander gesetzt hättest würdest Du feststellen, dass alert eine Exception in JavaScript auslöst, da Du einen zwingend notwendigen Übergabewert nicht angegeben hast.

    Referenz

    Der IE missinterpretiert leider eine Nichtangabe als _irgendetwas_.

    Schönen Gruß

    Afra

    1. Schoen zu wissen.

      Ich weiss ja nicht wie du Programmiersprachen lernst, aber bei mir lern ich problembezogen, d.h. ich setze mich mit Sachen nur auseinander, wenn ich sie brauche...

      Und da das alert() nur ein Platzhalter für eine andere Funktion ist, und der Mozilla keine Exception wirft, hab ich darauf auch nicht geachtet.

      Ansonsten klappt das timeout mit höheren Werten trotzdem nicht.

      Gruß

      Anton

      1. hi,

        Ich weiss ja nicht wie du Programmiersprachen lernst, aber bei mir lern ich problembezogen, d.h. ich setze mich mit Sachen nur auseinander, wenn ich sie brauche...

        Und postest dann unter verschiedenen Nicks wie Anton oder FireGlow, damit das nichtg so auffällt, für wie viel Trivialkram du fragst ...?

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Und postest dann unter verschiedenen Nicks wie Anton oder FireGlow, damit das nichtg so auffällt, für wie viel Trivialkram du fragst ...?

          Noe das eine ist mein Nick und das andere mein richtiger Name, wenn ich das verschleiern wollte, würde ich mich jedes mal neu ins Internet verbinden , und immer andere Namen benutzen?!

          Gruß

          Anton

  3. Hallo Leute

    Wenn wir schon beim Thema sind habe ich auch eine Frage. Ich möchte aus einer Methode eines Objektes ein Timeout setzen, welches dieselbe Methode wieder aufruft. Das 'Problem' - oder besser gesagt die Unschönheit - ist nun, dass ich beim Aufruf von setTimeout() den Variabelnnamen der Instanz der Klasse kennen muss:

    // Klasse
    function CMeineKlasse() {
      this.Timer  = null;
      this.update = CMeineKlasse_update;
      this.update();
    }
    // Methode
    function CMeineKlasse_update() {
      if (this.Timer) {
        window.clearTimeout(this.Timer);
      }
      // 1x pro Minute aufrufen
      // Geht das auch ohne 'MeinObjekt'?
      this.Timer = window.setTimeout('MeinObjekt.update();', 60000);
    }
    var MeinObjekt = new CMeineKlasse();

    Ich habe es mit Funktionspointern versucht, jedoch ging das leider nicht. Muss ich diese Methode wirklich aus der Klasse nehmen damit ich die Abhängigkeit vom Variablennamen los werde? Oder gibt es einen besseren Weg?

    Gruss & Dank

    Tom2

    PS: Eigentlich verwende ich setInterval, aber diese Funktionen werden auf dieselbe Art verwendet.

    1. Ich habe es mit Funktionspointern versucht, jedoch ging das leider nicht. Muss ich diese Methode wirklich aus der Klasse nehmen damit ich die Abhängigkeit vom Variablennamen los werde? Oder gibt es einen besseren Weg?

      Hatten wir alles schon, die Suchbegriffe sind: this setimeout und javascript

      Ergebniss z.b. http://forum.de.selfhtml.org/archiv/2006/1/t122012/#m784672

      Struppi.

      --
      Javascript ist toll (Perl auch!)
      1. Hallo

        Hatten wir alles schon, die Suchbegriffe sind: this setimeout und javascript

        Darauf hätte ich auch selbst kommen können...

        Ergebniss z.b. http://forum.de.selfhtml.org/archiv/2006/1/t122012/#m784672

        Ich war nah dran: Anstatt mir einer in einer Variablen gespeicherten Function Expression habe ich's mit einer Methode versucht, was nicht geklappt hat. Danke für den Hinweis!

        Gruss

        Tom2

    2. Hallo Tom2 (der authentifizierte),

      Oder gibt es einen besseren Weg?

      Wenn ich es korrekt verstanden habe, hast Du das selbe Problem, wie ich einst. wahsaga  hatte dafür eine Lösung, die Dir weiterhelfen sollte.

      Mit freundlichem Gruß
      Micha

      --
      LeagueEditor JavaScript :: simple Ligaverwaltung auf der Basis von JavaScript || JS Tetris :: für zwischendurch