Me pregunto si es posible forzar a un detector de eventos javascript, sin que la condición sea verdadera, forzarlo a ejecutar una vez y luego continuar escuchando para ver si se cumple su condición de ejecutar más.forzar javascript EventListener para ejecutar una vez?
Respuesta
si se coloca el código en una función, simplemente llame a la función de carga de la página
editado añadir ejemplo:
sé qué su evento sea pero aquí está un ejemplo:
<a ..onclick='someFunction()'>click</a>
<script type='text/javascript'>
function someFunction() {
// do whatever
}
// call the function
someFunction();
</script>
si necesita que la función esté en un contexto particular, puede usar el método de jQuery's proxy() http://api.jquery.com/jQuery.proxy/ – KOGI
Si entiendo tu pregunta correctamente, solo quieres manejar un evento a la vez (si un evento se dispara varias veces en una sucesión rápida, solo quieres manejar uno de ellos), una vez que el manejador esté completo, continuarás escuchando más eventos. ¿Correcto?
jQuery tiene una .one() método api.jquery.com/one
Sólo se controla el evento de una vez, pero si vuelve a unirse al evento en el controlador, entonces funcionará como desea.
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);
Esto le permitirá disparar el clickFunction una vez, ya que la magia de cierre de dejar que el removeEventListener encontrar el clickFunction.
No necesita usar una biblioteca solo para hacer que algo simple se haga.
Esto rápidamente se convierte en un problema si necesita usar este patrón más de dos veces en un código Esto es muy común en contextos de animación css donde tienes una animación "hook transitionend, set change, make transitionend remove them", y muchas veces tienes que encadenarla. Un patrón similar a http://hastebin.com/ikixonajuk.coffee es mucho más fácil de mantener. En NodeJS se llama simplemente "una vez". – Dmitry
1. en 2011 cuando la respuesta se publicó originalmente, una vez no estaba disponible. 2. es una pregunta de implementación del lado del cliente en la pregunta original, por lo que nodejs no es útil 3. su script de café es esencialmente la misma idea con una ligera modificación. – Jlam
una vez está disponible ahora en el navegador a través de o todavía tenemos que inventarlo/usar bibliotecas de terceros hinchadas para ello? – Dmitry
- 1. JavaScript - ejecutar una vez sin booleanos
- 2. Forzar javascript para ejecutar * antes * navegador redibujar (ejemplo jsFiddle)
- 3. Obteniendo un forech para ejecutar una vez
- 4. ¿Forzar un IQueryable para ejecutar?
- 5. Ejecutar una vez al día
- 6. Forzar la función .change() para ejecutar - jQuery
- 7. Cómo agregar EventListener a elementos no dom en javascript?
- 8. localStorage eventListener no se llama
- 9. ¿Cómo ejecutar una función en JavaScript cada vez que cambia una variable?
- 10. Dinámicamente incluyendo archivos javascript una sola vez
- 11. BitMap Eventlistener no funciona
- 12. En XSLT, puedo ejecutar una plantilla solo una vez
- 13. ¿Separar cadena una vez en javascript?
- 14. Forzar Makefile para ejecutar script antes de construir objetivos
- 15. ¿Es un EventListener un observable?
- 16. Ejecutar tareas periódicamente (una vez al día/una vez a la semana)
- 17. diferencia entre ejecutar curl_close() una vez o con frecuencia?
- 18. Esperar antes de activar una función para ejecutar en JavaScript
- 19. Cómo forzar IE a recargar javascript?
- 20. ¿Forzar mapply para devolver una lista?
- 21. Ejecutar tarea una vez a la semana en Heroku
- 22. Android View.OnKeyListener: haga clic una vez, ejecutar dos veces
- 23. Ejecutar un script PHP una vez por minuto
- 24. Junit: ejecutar el método de configuración una vez
- 25. Rehabilitación de touchmove eventlistener. Aplicación para iPhone con Phone gap
- 26. Ejecutar una función JavaScript en una aplicación C#
- 27. Ejecutar un método una sola vez al principio antes de ejecutar cualquier prueba en PyUnit
- 28. ¿Cómo renderizar una plantilla dentro de un EventListener?
- 29. html5, agregando un eventlistener a una imagen dibujada en lienzo
- 30. Forzar una actualización de la página utilizando Javascript en Firefox
"sin que la condición sea verdadera" ... ¿qué condición? Además, si se dispara una vez, entonces continúe escuchando, luego, presumiblemente, vuelva a disparar, luego ... no está disparando una vez. ¿A menos que quiera decir que solo quiere procesar 1 evento a la vez (no múltiples eventos simultáneos)? – KOGI
¿Estás usando un framework de JavaScript? Creo que en ExtJS es posible. En jQuery quizás también. – Marc
jQuery tiene un método .one(), pero no estoy seguro si es bastante lo que estás buscando. Aunque, podría volver a vincular el evento en el controlador. Esto tendría el efecto de no manejar eventos simultáneos, luego de que el controlador esté completo, comience a escuchar el evento nuevamente. http://api.jquery.com/one/ – KOGI