Javascript: Warten, bis Button gedrückt wurde



  • Hi,

    für meine Dialogbox möchte ich jetzt auch die Wartefunktionalität implementieren.

    Das bedeutet, ich habe einen JS-Kontrollfluss und der wird unterbrochen, wenn die Dialogbox geöffnet wird. Sobald ein Button gedrückt wird, soll der Fluss wiederaufgenommen werden.

    Aber JS scheint nur einen Thread zu haben, also kann das Drücken der Buttons über Javascript nicht verarbeitet werden, solange ich in meiner Warteschleife rumhänge. 😞

    Durch das Klicken wird ja vermutlich ein Event in irgendeine Queue gehängt. Kann ich die auch selbst auslesen?

    Hier noch etwas Pseudocode:

    // irgend ein Code
    while(!flag) {sleep(50);}
    
    // irgendwo in dem Dialog
    <input type="button" onClick="flag = true;" value="Ok" />
    

    Hoffe, meine Frage ist verständlich. 🙂



  • Hi,

    da hab ich mir auch schonmal 'nen Wolf gesucht...ohne Erfolg.
    Wenn du was findest, würde mich das auch sehr interessieren, aber ich denke du wirst den Weg über irgendwelche Callback-Funktionen gehen müssen.



  • probiers mal mit window.setInterval und window.clearInterval:
    http://de.selfhtml.org/javascript/objekte/window.htm#set_interval


  • Mod

    Der Ansatz ist für JS falsch.

    Man arbeitet dort mit Callbacks und nicht mit Warteschleifen.
    setInterval ist oft eine gute Idee. Was genau macht deine Seite denn?



  • Callback? Also muss ich meinen Kontrollfluss in den Vorlaufteil und einen Teil aufteilen, der in bestimmten Zeitintervallen aufgerufen wird und, falls die Bedingung erfüllt ist, weiterläuft?

    Quasi so:

    showPopup();
    
    setTimeout("funktion", 100);
    
    function funktion()
    {
    if(/*condition true*/)
    {
    }
    else
    setTimeout("funktion", 100);
    }
    

    ?

    Ich möchte einfach ein eigenes Popup bauen, das vier Buttons als Auswahlmöglichkeit für den Benutzer anbietet. Dieses poppt innerhalb einer Javascript-Funktion auf und je nachdem, was ausgewählt wird, soll ein anderes Ergebnis ausgerechnet und angezeigt werden.



  • Teile den Code einfach auf 4 Funktionen auf. Wenn der Nutzer auf den Button 1 klickt dann wird halt bar1() ausgeführt.

    function foo() {
     // ..tu was
     showPopup();
    }
    
    function bar1() {
     // tu was wenn Auswahl 1 getroffen
    }
    
    function bar2() {
     // tu was wenn Auswahl 2 getroffen
    }
    
    function bar3() {
     // tu was wenn Auswahl 3 getroffen
    }
    // usw...
    


  • Okay, wie ich das dann drehe ist ja egal. Demnach lässt sich ein tatsächliches Popup wie alert/prompt/confirm nicht einrichten. 😞 Schade, aber okay. Vielen Dank!



  • 9 * 4 = 32 😡



  • Webfish schrieb:

    9 * 4 = 32 😡

    36 nich 32 🤡



  • Pah, sagt sich leicht als einer, der einen numerischen Namen hat.


Anmelden zum Antworten