Announcement

Collapse
No announcement yet.

sämtliche Eingaben während Wait-Cursor unterdrücken

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • sämtliche Eingaben während Wait-Cursor unterdrücken

    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

  • #2
    Mit einem Selektor dieser Bibliothek lässt sich das schnell disablen....und auch der AJAX-Request ist damit leichter zu handhaben.

    Prinzipiell würde ich sagen, das nur ein Request aktiv sein kann. Ist der Request angestossen, kann kein weiterer erfolgen. Die Javascriptfunktion sollte also prüfen, ob gerade einer aktiv ist

    In der Form

    function request
    ist aktiv?
    -> ja return
    -> nein ->aktiv=true-> weiter
    Zuletzt editiert von Christian Marquardt; 09.06.2011, 10:02. Reason: Rechtschreibung
    Christian

    Comment


    • #3
      Hallo,
      Eine andere Möglichkeit ist die Verwendung eines Overlays. Wird eine Aktion gestartet, wird ein Bildschirmfüllendes Overlay mit z.B. halbtransparentem Hintergrund ÜBER alle Elemente gelegt. Somit ist nur noch das Overlay "anklickbar" und dem User wird optisch verdeutlicht dass er jetzt warten muss.
      Ist der Request bearbeitet, muß das Overlay natürlich wieder verschwinden.

      Gruß Falk
      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

      Comment

      Working...
      X