Javascript läuft nicht endlos
anyone
- javascript
Hi,
Um eine Seite zu aktualisieren habe ich ein Javascript in einem Frame, dass sich seilber immer wieder per
setTimeout("weiterleitung()", 100000);
function weiterleitung() {
window.location.replace(self.location);
}
aktualisiert (und falls vorhanden neue Inhalte vom Server zum Kunden transportiert). Leider bleibt dieses Script nach ein bis zwei Stunden im Internet Explorer hängen und läuft dann auch nach einem Neuladen der Seite mit F5 nicht mehr.
Zur Abhilfe habe ich daher eine weitere Funktion in die Seite eingebunden, die das Aktualisierungsframe von aussen immer wieder neu läd.
function nachladen() {
neu2.location.href = neu2.location.href;
setTimeout("nachladen()", 10000);
}
Beide Funktionen laufen unabhängig und zusammen problemlos im Firefox, Opera und Chrom. Der IE bleibt aber trotzdem nach einigen Stunden hängen. Warum?
Danke :)
Also wenn es keine Sicherung im IE ist, tippe ich auf einen vollgelaufenen Arbeitsspeicher.
Aber als erstes würde ich fragen wieso ein Script 2 Stunden laufen muss?
Gruß
Arbeitsmotivations überfüllter
T-Rex
H Das Script soll nicht nur zwei Stunden sondern für immer laufen. In der Produktion eines grossen deutschen Autozulieferers haben wir zwei verstaubte Rechner, die immer an und eigentlich fürs Fräsen von Teilen zuständig sind.
Über einige Umwege habe ich nun Zugriff auf den Internet Explorer und Nodepad bekommen (einen anderen Browser darf ich leider nicht installieren) und hab ein Script geschrieben, dass in Endlosschleife eine bestimmte Datei von meinem Server aufruft.
Mit einem zweiten Rechner (die IPs sind dynamisch) kann man diese Datei verändern und dadurch zB den Fensterinhalt des ersten Rechners weit sichtbar rot/gelb blinken lassen oder meinem Kollegen eine Nachricht rüber schicken, ohne immer in die andere Halle laufen oder private Handys nutzen zu müssen.
Einen entsprechenden Verbesserungsvorschlag habe ich bereits eingereicht aber der wird wegen den hohen Kosten für einen richtigen Programmierer sicher wieder abgelehnt.
Gibt es ne Möglichkeit den Arbeitsspeicher vom IE automatisch zu leeren ohne den Browser ständig manuell neustarten zu müssen? Wie gesagt ne weile funktioniert es perfekt aber solange es nicht zuverlässig ist muss man sicherheitshalber trotzdem immer rüber laufen...
Puh wenn ich das so höre bezweifel ich ob du auf die richtige Technologie gesetzt hast.
Das mit dem Arbeitsspeicher ist nur eine Vermutung. Direkten Einfluss kannst du nicht nehmen. Du kannst nur deine Variablen die du nicht mehr brauchst wieder löschen und somit den Arbeitsspeicher freigeben. Solange du aber nicht im globalen Scope rumpfuscht und alles brav in functionen hast, sollte das alles automatisch geschehen - dem Garbage Collector sei dank.
Was Auge sagt wäre eine Alternative - ein Meta Refresh. Die Frage ist ob das der IE 2 Stunden mitmacht. Mein Firefox mault nach x Meta Refresh dass es sich um eine nicht korrekte Umleitung handelt.
Gruß
Fehlgeleiteter
T-Rex
na derzeit läuft es mit meta refresh + Javascript je nachdem welches die kürzere Zeit hat mal schaun wie lange...ne andere Technologie ist nicht vorhanden ;)
Om nah hoo pez nyeetz, T-Rex!
Was Auge sagt wäre eine Alternative - ein Meta Refresh. Die Frage ist ob das der IE 2 Stunden mitmacht. Mein Firefox mault nach x Meta Refresh dass es sich um eine nicht korrekte Umleitung handelt.
Dieses Forum kann man auch refreshen lassen, ich habe da noch keine Probleme feststellen können.
Matthias
Hallo
Also wenn es keine Sicherung im IE ist, tippe ich auf einen vollgelaufenen Arbeitsspeicher.
Aber als erstes würde ich fragen wieso ein Script 2 Stunden laufen muss?
Ich vermute mal, dass das Script selbst nicht zwei Stunden lang läuft, sondern alle 100000 Millisekungen (1min und 40sek) angestoßen wird und nach 2h nicht mehr tut, wie ihm gehießen.
Mal ganz davon ab, ob das _auf_diese_Art_ sinnvoll ist und woran es liegt, könnte man das auch mit einem http://de.selfhtml.org/html/kopfdaten/meta.htm#weiterleitung@title=Meta-Refresh lösen.
Tschö, Auge
Hallo,
Hänge mal einen zufälligen, sich unterscheidenden String an die URL an, z.B. den aktuellen Timestamp oder Math.random.
location.href = "/foo?" + Math.random();
Das umgeht sämtliche Caching-Versuche des Browsers. Das lässt sich ggf. auch mit HTTP-Headern oder <http://de.selfhtml.org/html/kopfdaten/meta.htm#laden@title=äquivalenten Meta-Tags> steuern.
Mathias