Hi,
In einem Web-Interface habe ich bestimmte Aktionen (hier Auswahl eines Elementes aus einer DropDopwn-Liste, um eine andere Drop-Down-Liste zu erzeugen) die etwas länger dauern, da unter anderem auch Datebankabfragen, Kommunikation mit einem C++-Programm und Dateisuchen damit zusammenhängen. Diese Aktionen sind als HTTP-Request implementiert, die Auswertung der Aktion (d.h. Aufbau der entsprechenden Liste) findet in der onreadystatchange-Funktion statt.
Um den Anwender darüber zu informieren, dass es etwas dauert, wird der Cursor in einen Wait-Cursor verwandelt. Trotzdem sind aber auf der Seite noch Aktionen verfügbar, was bedeutet, dass ich nach Auswahl einer Option sofort eine andere Option auswählen kann, und je nachdem welche der beiden Aktionen länger dauert, ist es nicht unbedingt die letzte Aktion, die gewinnt. Außerdem können auch durch andere Aktionen derselben Seite weitere HTTP-Requests an die C++-Applikation weitergegeben werden, die eigentlich nicht dafür gedacht ist mehrere dieser Anfragen gleichzeitig zu verwalten, und daran Anstoß (im Sinne eines Programmabsturzes) nehmen könnte.
Ich dachte zunächst, das ganze mit einem document.body.disabled=true lösen zu können, das in der onreadystatechange-Funktion wieder auf false gesetzt wird, aber da zeigt sich mein Browser extrem unbeeindruckt, auch ein disabled für die form scheint nicht zu existieren. Muss ich sämtliche Eingabefelder, Drop-down-Boxen und Buttons einzeln disablen (entweder explizit oder in einer Schleife), oder gibt es da etwas einfacheres? Als Alternative fällt mir noch ein, ein verstecktes Eingabeelement zu setzen, das müsste ich dann aber auch bei JEDER Event-Routine abprüfen, ist also auch sehr aufwändig.
Vielleicht hat ja noch jemand Ideen, um Aktionen während des Wait-Cursors zu verhindern.
Gruß
martin Dietz
In einem Web-Interface habe ich bestimmte Aktionen (hier Auswahl eines Elementes aus einer DropDopwn-Liste, um eine andere Drop-Down-Liste zu erzeugen) die etwas länger dauern, da unter anderem auch Datebankabfragen, Kommunikation mit einem C++-Programm und Dateisuchen damit zusammenhängen. Diese Aktionen sind als HTTP-Request implementiert, die Auswertung der Aktion (d.h. Aufbau der entsprechenden Liste) findet in der onreadystatchange-Funktion statt.
Um den Anwender darüber zu informieren, dass es etwas dauert, wird der Cursor in einen Wait-Cursor verwandelt. Trotzdem sind aber auf der Seite noch Aktionen verfügbar, was bedeutet, dass ich nach Auswahl einer Option sofort eine andere Option auswählen kann, und je nachdem welche der beiden Aktionen länger dauert, ist es nicht unbedingt die letzte Aktion, die gewinnt. Außerdem können auch durch andere Aktionen derselben Seite weitere HTTP-Requests an die C++-Applikation weitergegeben werden, die eigentlich nicht dafür gedacht ist mehrere dieser Anfragen gleichzeitig zu verwalten, und daran Anstoß (im Sinne eines Programmabsturzes) nehmen könnte.
Ich dachte zunächst, das ganze mit einem document.body.disabled=true lösen zu können, das in der onreadystatechange-Funktion wieder auf false gesetzt wird, aber da zeigt sich mein Browser extrem unbeeindruckt, auch ein disabled für die form scheint nicht zu existieren. Muss ich sämtliche Eingabefelder, Drop-down-Boxen und Buttons einzeln disablen (entweder explizit oder in einer Schleife), oder gibt es da etwas einfacheres? Als Alternative fällt mir noch ein, ein verstecktes Eingabeelement zu setzen, das müsste ich dann aber auch bei JEDER Event-Routine abprüfen, ist also auch sehr aufwändig.
Vielleicht hat ja noch jemand Ideen, um Aktionen während des Wait-Cursors zu verhindern.
Gruß
martin Dietz
Comment