hi,
bevor dir hier gar keiner mehr antwortet mach ich das noch schnell vor dem schlafengehen (warum kann ich es nicht lassen) obwohl es sich eventuel um ein chatsystem handelt und damit wärst du ja quasi konkurenz für mich.
ich beschäftige mich schon seit fast einem Jahr mit Perl und CGI-Programmierung, aber immer wieder stoße ich auf Probleme, die mir nur mit Java zu lösen scheinen - nur Java möchte ich nicht einsetzen.
och, also irgendwie geht so ziemlich alles mit perl..
Dieses Mal, glaube ich, gibt es keine Lösung, aber vielleicht hat ja doch jemand eine Idee... Die Sache läuft wie folgt ab:
*lausch*
* Der User ruft eine HTML-Seite auf
* Die HTML-Seite ruft ein CGI-Script auf, welches wieder eine Seite zurück an den Browser gibt.
* Auf der Seite, die jetzt angezeigt wird, befinden sich Daten, die sich auf dem Server sporadisch ändern.
* Die Seite soll immer dann aktualisiert werden, wenn sich die Daten auf dem Server ändern
ja, also entweder severpush oder alle paar sekunden das script neu aufrufen...
Natürlich könnte ich der HTML-Seite sagen, sie soll sich alle paar Sekunden aktualisieren - dann wird sie aber auch aktualisiert, wenn auf dem Server gar nichts passiert ist.
wieso? das script kann doch auch Status: 204 No Response zurückgeben, dann aktualisiert gar nichts. IE 5.5 und mozilla verstehen das aber merkwürdiger weise nicht mehr. entweder ein bug oder das hat irgendeinen sinn..(der sich mir dann nicht erschließen würde, das ist nämlich praktisch)
Ich habe mir überlegt, daß das CGI-Script vielleicht eine Message senden könnte - geht aber nicht, weil es ja beendet wird, nachdem die HTML-Seite an den Browser gesendet wurde. Bei dem Gedanken kommen noch ein paar Fragen auf, vielleicht kann man das Script ja warten lassen...:
klar kann man es warten lassen. obwohl das den provider nicht so freuen wird ;)
* Kann ich im Script prüfen, ob der Browser des Users geschlossen wird? Wenn ja, wie??
im perlscript? nö.
* Das Script wird nicht beendet und wartet so lange, bis sich die Daten verändert haben - wie kann ich eine neue Seite an den Browser senden? Wenn ich einfach neu anfange mit "<html><body>..." wird der Text einfach unten an den alten drangehängt - die alte Seite soll aber gelöscht werden, damit nur die neuen Informationen sichtbar sind.
das geht mit serverpush und mulipart-x-replace oder so ähnlich aber das rate ich dir nicht.. der bricht die verbindung nicht ab und jeder besuche würde dauerhaft einen prozess auf dem server benötigen...
wie wird sich dein provider freuen, wenn dauernd 200 prozesse von einem user laufen *g*
Und dann folgt auch gleich noch ein neues Problem:
*gähn*
Ich habe ein Frameset mit 2 Frames. In Frame 1 befinden sich die Daten, die vom Script ausgegeben werden und in Frame 2 befindet sich ein Formular, in dem sich der Cursor immer in einem Eingabefeld befinden muß. Wenn jetzt Frame 1 aktualisiert wird, ist der Cursor auf einmal nicht mehr im Eingabefeld. Wenn ich Frame 1 sage, es soll via JavaScript in Frame 2 den Cursor wieder in das Feld setzen, befindet sich der Cursor am Anfang des Feldes. Das ist schlecht, denn wenn ich dort gerade Eingaben mache und Frame 1 wird aktualisiert (ich merke das natürlich nicht) schreibe ich auf einmal vor den schon eingegebenen Daten und wenn ich glück habe, merke ich es bevor das Formular abgesendet wird. Deswegen eine Frage:
das riecht ja schon sehr nach chat.
* Wie kann ich via JavaScript sagen, daß er nicht nur den Cursor in das Feld setzt, sondern auch gleichzeitig hinter den bereits eingegebenen Text?
dumme gegenfrage: wozu das ganze? solange du schreibst wird der focus eh nicht verschwinden also brauchst du nur eine funktion die den focus nach dem absenden neu setzt. wenn sich das forum neu aufbaut, machst du halt ein kleines javascript nach der formular definition.
Vielleicht sollte ich diese Frage auch extra im Forum stellen (Thema JavaScript)...
wieso, wo ist das problem? das formular sollte dann etwa imm so aussehen:
<form name=myform>
<input name=myinput>
</form>
<script>
document.myform.myinput.focus();
</script>
warum sollte das in deinem fall nur über einen zweiten frame gehen? *ganzstarkwunder*
Okay, danke auf jeden Fall!
bitte
so, das wars für heute *wegkrach*
nacht ihrs
danny