alle funktionen stoppen
martial-ron
- javascript
hi, ich benötige mal wieder eure hilfe!
ist es möglich, sämtliche funktionen zu stoppen (weil sie zB durch setTimeout laufen), oder muss man das "manuell" erledigen, indem man jede einzelne funktion abbricht?
herzlichen dank!
Hi Du,
wenn man LOOPVAR = setTimeout(... bzw. LOOPVAR = setInterval(... macht, dann kann man hinterher durch alert(LOOPVAR) feststellen, dass in der Variable LOOPVAR lediglich ein "primitver Wert" (so'ne Art Process ID) gespeichert wird - also kein kompliziertes Objekt.
Im NN geht das bei 1 los (oder lass es 0 sein, keine Ahnung) und steigt bei jedem set... um 1, im IE sind das irgendwelche großen Zahlen (8 stellig, aber bei meinen Versuchen ebenfalls stetig um 1 steigend).
Wahrscheinlich kann man alle Intervalle und Timeouts killen, indem man in einer Schleife alle Zahlen von 0 - 99999999 durchiteriert und mit ihnen clear....(ZAHL) aufruft.
P.S.: Wenn es tats"achlich gehen sollte, k"onnte es vielleicht Seiteneffekte geben, z.B. dass man Jobs aus anderen Fenstern killt (obwohl ich das aus sicherheitstechnischen Gr"unden wiederum f"ur fraglich halte)...
Naja, probier's mal aus...
Mirko
Moin!
wenn man LOOPVAR = setTimeout(... bzw. LOOPVAR = setInterval(... macht, dann kann man hinterher durch alert(LOOPVAR) feststellen, dass in der Variable LOOPVAR lediglich ein "primitver Wert" (so'ne Art Process ID) gespeichert wird - also kein kompliziertes Objekt.
Nein, das kann man so nicht. JavaScript wandelt Datentypen automatisch um. Das heisst, wenn an einer Stelle ein String verlangt wird (wie bei alert()), wird alles, was Du dort hinschreibst, aber kein String ist, eben automatisch umgewandelt. Im Falle eines "komplizierten Objekts" wird dazu die toString() Methode des Objekts aufgerufen. Diese Methode hat jedes Objekt, weil jedes Objekt vom Object-Objekt abgeleitet ist. Siehe dazu http://developer.netscape.com/docs/manuals/js/client/jsref/object.htm#1193350. Rufst Du z.B. alert(date) auf, wobei date ein Date-Objekt ist, erhaelst Du eine Repraesentation des in date gespeicherten Datums (http://developer.netscape.com/docs/manuals/js/client/jsref/date.htm#1206669). Nach Deiner Vorgehensweise muesstest Du jedoch denken, dass date selbst ein String ist, das stimmt aber nicht.
Um den Typ einer Variablen festzustellen, steht Dir die typeof()-Funktion zur Verfuegung. Diese liefert im Falle des Rueckgabewerts von window.setTimeout() auf dem Netscape 4.7 tatsaechlich "Number" zurueck, es handelt sich also um eine einfache Zahl. Da dies nicht dokumentiert ist, kannst Du aber nicht davon ausgehen, dass das auf anderen Browsern oder in anderen Versionen genauso ist.
Wahrscheinlich kann man alle Intervalle und Timeouts killen, indem man in einer Schleife alle Zahlen von 0 - 99999999 durchiteriert und mit ihnen clear....(ZAHL) aufruft.
P.S.: Wenn es tats"achlich gehen sollte, k"onnte es vielleicht Seiteneffekte geben, z.B. dass man Jobs aus anderen Fenstern killt (obwohl ich das aus sicherheitstechnischen Gr"unden wiederum f"ur fraglich halte)...
Das ist eine interessante Frage. Wuerde mich nicht wundern, wenn der nimmermuede Browserfehlersucher Georgi Guninski (http://www.heise.de/newsticker/search.shtml?T=guninski) da auch schonmal ein Sicherheitsleck endeckt hat.
So long