|
|||
Greasemonkey: bleibt manchmal bei setTimeout stecken
Hallo allerseits,
bei meinem Greasemonkey-Script bleibt die Abarbeitung manchmal bei einem setTimeout-Aufruf stecken - manchmal auch nicht. Je länger die Wartezeit ist, desto eher scheint es nicht weiter zu gehen. Folgende Funktion demonstriert das bei mir: Code:
function cw_TimeoutSec(func, sec){ GM_log("cw_TimeoutSec: " + sec + " Sekunden"); if (sec <= 0) { setTimeout(func, 100); } else { setTimeout(function(){cw_TimeoutSec(func, sec-1)}, 1000); } } Hat jemand eine Idee, was da passiert? |
Sponsored Links |
Sponsored Links |
|
|||
Danke für die Antwort. Ist schon klar, dass es keine echte Rekursion ist - aber immerhin so etwas ähnliches, weil sich die Funktion selbst aufruft...
Ich bin drauf gekommen, weil ein bis dato funktionierendes Skript plötzlich nicht mehr ging. Dort sind eine Menge setTimeout-Aufrufe drin, z.T. auch mehrere Sekunden bis Minuten. Bei diesen Aufrufen bleibt das Skript regelmäßig hängen - je kürzer der Timeout, desto höher ist die Wahrscheinlichkeit, dass er korrekt abgearbeitet wird. Ich habe die Funktion geschrieben, um sicherzustellen, dass sie grundsätzlich funktioniert (und in dem vergeblichen Versuch, einzelne lange Aufrufe durch viele kurze zu ersetzen ). Es gibt keine Fehlermeldung in der Konsole - das Skript ist einfach tot und wird auch nach mehreren Minuten Wartezeit nicht weiter ausgeführt. Naja, und ich weiß nicht, was sich an meinem Rechner in dem Moment verändert hat - abgesehen von der betreffenden Webseite. Nur leider bleibt das Skript bei allen getesteten Seiten hängen, auch einer lokalen Seite, die keinen Schnickschnack eingebaut hat. Und vielleicht hat sich auch irgendwas upgedatet - aber das weiß ich nicht so genau. |
|
||||
Das läßt sich so nicht nachvollziehen, ein Timeout bleibt nicht "hängen". Der wird immer aufgerufen. Ich vermute eher ein Problem bei der Logik. Du stopst ja die Timeout Aufrufe in deinem obigen Beispiel. Vielleicht wird der Timeout irgendwann einfach nicht mehr gestartet?
|
|
|||
Das ist ja genau mein Problem, dass sich das nicht nachvollziehen und nichtmal ordentlich reproduzieren lässt. Der Code zählt auf der selben Seite unterschiedlich weit. Wenn ich direkt vor dem setTimeout-Aufruf einen GM_log einsetze, wird der als letztes in der Konsole angezeigt.
Hm, ich habe bereits alle Addons und Plugins deaktiviert, ohne Erfolg. Als nächstes werde ich wohl Firefox komplett de- und neuinstallieren. Außerdem werde ich das Skript auf einem anderen Rechner ausprobieren. Dort wird es aber wohl gehen... Und natürlich könnte sich auch irgend ein Schädling eingenistet haben... Echt blöd, ich werde wohl am Donnerstag ein wenig Zeit investieren müssen. Hab erstmal vielen Dank für die Unterstützung - ich melde mich, ob meine Maßnahmen Erfolg haben. |
Stichwörter |
firefox, greasemonkey, settimeout |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
setTimeout | David | Javascript & Ajax | 4 | 19.07.2010 16:36 |
Frage zu setTimeout | gustavmega | Javascript & Ajax | 0 | 23.11.2009 23:37 |
[Fehler] setTimeout innerhalb einer Klasse | Lord-Sfx | Javascript & Ajax | 2 | 08.04.2009 01:37 |
Mit greasemonkey css erstellen | ZeroX^ | CSS | 0 | 01.10.2008 23:53 |
Mit setTimeout funktion im eigenen Objekt aufrufen | PoWl | Javascript & Ajax | 5 | 11.05.2008 11:35 |