Mi chiedo se è possibile forzare un listener di eventi javascript a, senza che la condizione sia vera forza per eseguirlo una volta, quindi continuare ad ascoltare perché le condizioni siano soddisfatte per essere eseguite ulteriormente?forzare EventListener javascript da eseguire una volta?
risposta
se si avvolge il codice in una funzione, basta chiamare la funzione al caricamento della pagina
modificato per aggiungere ad esempio:
so cosa il vostro evento è, ma ecco un esempio:
<a ..onclick='someFunction()'>click</a>
<script type='text/javascript'>
function someFunction() {
// do whatever
}
// call the function
someFunction();
</script>
se è necessario che la funzione si trovi in un particolare contesto, è possibile utilizzare il metodo jQuery proxy() http://api.jquery.com/jQuery.proxy/ – KOGI
Se comprendo correttamente la tua domanda, vuoi solo gestire un evento alla volta (se un evento si attiva più volte in rapida successione, vuoi solo gestirne uno), una volta completato il gestore, continuerai ad ascoltare più eventi. Corretta?
jQuery ha un .one() metodo api.jquery.com/one
Gestisce solo l'evento una volta, ma se si ri-legano l'evento nel gestore, allora funzionerà come si desidera.
function handler()
{
// do stuff
$(this).one('click', handler);
}
$('.someElement').one('click', handler);
var clickFunction = function (event) {
//do some stuff here
window.removeEventListener('click',clickFunction, false);
};
window.addEventListener("click", clickFunction, false);
Questo vi permetterà di sparare il clickFunction una volta, come la magia della chiusura lasciare che il removeEventListener trovare il clickFunction.
Non c'è bisogno di usare una libreria solo per fare qualcosa di semplice.
Questo diventa rapidamente un problema se è necessario utilizzare questo modello più di due volte in un codice. Questo è molto comune nei contesti di animazione css in cui è presente un'animazione "hook transitionend, set change, make transitionend remove itself" e spesso è necessario associarla a catena. Un modello simile a http://hastebin.com/ikixonajuk.coffee è molto più gestibile. In NodeJS è chiamato solo "una volta". – Dmitry
1. nel 2011, quando la risposta era stata originariamente pubblicata, una volta non era disponibile. 2. questa è una domanda di implementazione lato client nella domanda originale, quindi nodejs non è utile 3. lo script del caffè è essenzialmente la stessa idea con una leggera modifica. – Jlam
è una volta disponibile ora nel browser o dobbiamo ancora inventarlo/utilizzare librerie di terze parti gonfie per questo? – Dmitry
- 1. Ottenere un foreach da eseguire una volta
- 2. Come si pianifica un'attività da eseguire una volta?
- 3. JavaScript - eseguito una volta senza booleans
- 4. javascript eventemitter più eventi una volta
- 5. BitMap Eventlistener non funzionante
- 6. Come eseguire la funzione una volta?
- 7. Come ottenere una funzione javascript per eseguire una sola volta su Dom pronto
- 8. codice Javascript in esecuzione una volta
- 9. Sostituisci funzione funziona solo una volta (javascript)
- 10. è possibile forzare una routine di go da eseguire su una CPU specifica?
- 11. C'è un modo per forzare una scheda inattiva per eseguire JavaScript a velocità normale
- 12. Javascript funziona solo una volta (non una seconda volta dopo l'aggiornamento della pagina) nell'app Rails
- 13. Attendi prima di attivare una funzione da eseguire in JavaScript
- 14. Come forzare JavaScript per copiare in profondità una stringa?
- 15. È possibile eseguire UPnP Discovery da Javascript?
- 16. Come forzare un'interruzione di riga su una stringa concatenata Javascript?
- 17. Decrementa una variabile una volta al giorno - Javascript
- 18. come aggiungere un eventListener a un oggetto in javascript che si attiva quando l'oggetto viene manipolato?
- 19. Android - Come eseguire l'intento da JavaScript
- 20. carica show_ads.js una volta
- 21. Richiamata/Comando vs EventListener/Observer modello
- 22. Eseguire uno script PHP una volta al minuto
- 23. Come eseguire Cronjobs più di una volta al minuto?
- 24. Come eseguire un flusso una volta, automaticamente all'avvio del mulo?
- 25. Impossibile installare o eseguire l'applicazione: Fare clic una volta
- 26. Come eseguire read() funzione solo una volta in batch Primavera
- 27. sqlite3.Warning: È possibile eseguire una sola istruzione alla volta
- 28. Tesseract: come eseguire tesseract con più lingue una volta
- 29. Forzare linq per eseguire join interni
- 30. Pianificazione delle attività da eseguire una volta, utilizzando lo spazio dei nomi dell'attività Spring
"senza che la condizione sia vera" ... quali condizioni? Inoltre, se sparerà una volta, poi continuerà ad ascoltare, quindi presumibilmente sparerà ancora, quindi ... non sparerà una volta. A meno che non intendi voler elaborare solo un evento alla volta (non più eventi simultanei)? – KOGI
Stai usando un framework javascript? Penso che in ExtJS sia possibile. Forse anche in jQuery. – Marc
jQuery ha un metodo .one(), ma non sono sicuro che sia proprio quello che stai cercando. Sebbene, potresti semplicemente re-associare l'evento nel gestore. Ciò avrebbe l'effetto di non gestire gli eventi simultanei, quindi, una volta completato il gestore, iniziare nuovamente ad ascoltare l'evento. http://api.jquery.com/one/ – KOGI