Domanda

ho bisogno di modificare un po 'l'eredità codice javascript. C'è un posto dove voglio aspettare fino a quando l'utente preme uno dei due pulsanti e poi continuare con il flusso del programma (come la funzione prompt()). Come può essere raggiunto?

È stato utile?

Soluzione

È necessario rompere la funzione in quel punto, e aggiungere un'altra funzione per la cattura di eventi premere il pulsante dell'utente.

È possibile utilizzare Narrative Javascript di introdurre il blocco comportamento e semplificarlo (quindi non si fa bisogno di rompere la funzione in due parti), ma si noti che questa libreria è stata abbandonata dal 2013.

Altri suggerimenti

Ok, probabilmente si voleva questo genere di cose, è possibile implementare gli eventi per segnalare la chiave dalla risposta di Pentium10:

È possibile effettuare una funzione chiamata per esempio waitForIt (), in cui si imposta una setTimeout () funzione che chiama lo stesso metodo fino ad una variabile globale è vero (impostato si preme l'azione pulsante).

Ad esempio:

<html>
<head>
 <script type="text/javascript">
var buttonpressed = false;

function waitForIt() {
  if (!buttonpressed ) {
  setTimeout(waitForIt,2500);
  } else {
 document.getElementById('info').value='ok';
  }
}

function startSomething() {
 document.getElementById('info').value='';
 waitForIt();
 document.getElementById('info').value='waiting'; 
}

function setButtonPressed() {
 buttonpressed = true;
}

</script>
</head>
<body>
<br>
<input type='text' style="width: 200px;" id="info" />
<br>
<input type='button' style="width: 200px;" value="Start" onclick="javascript: startSomething();">
<br>
<br>
<input type='button' style="width: 200px;" value="Continue" onclick="javascript: setButtonPressed();">
</body>

</html>

Si potrebbe chiamare il metodo waitForIt () direttamente, ma ho fatto in modo da poter vedere cosa sta succedendo. Ci scusiamo per la confusione nella esempio, ma non ho molto tempo da perdere:)

  • È possibile nascondere il contenuto che potrebbe non essere visibile (usando CSS display: none) e mostrare quando si preme un pulsante
  • .
  • O, più sicuro: Si può fare una richiesta del server / AJAX quando è stato premuto un pulsante

Non c'è un "sonno" o "attendere" operatore in JavaScript. È possibile impostare un timer, però, e quando il timer scade, eseguirà una funzione.

setTimeout("alert('hello')",1250);

È necessario utilizzare gli eventi per la bandiera chiave:

<script type="text/javascript">

document.onkeyup = KeyCheck;       
function KeyCheck()

{

   var KeyID = event.keyCode;


   switch(KeyID)

   {

      case 16:

      document.Form1.KeyName.value = "Shift";

      break; 

      case 17:

      document.Form1.KeyName.value = "Ctrl";

      break;

      case 18:

      document.Form1.KeyName.value = "Alt";

      break;

      case 19:

      document.Form1.KeyName.value = "Pause";

      break;

      case 37:

      document.Form1.KeyName.value = "Arrow Left";

      break;

      case 38:

      document.Form1.KeyName.value = "Arrow Up";

      break;

      case 39:

      document.Form1.KeyName.value = "Arrow Right";

      break;

      case 40:

      document.Form1.KeyName.value = "Arrow Down";

      break;
   }

}
</script>

Non vorrei giocare con i timeout e gli intervalli per questo.

Si sarebbe meglio tagliare il programma in 2 parti, può essere come lei suggerisce a 2 funzioni.
Eseguire la prima parte, aggiungere il codice di chiedere l'intervento dell'utente.

E poi in base all'azione, eseguire la seconda parte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top