Estoy lidiando con una situación en la que debo vincular eventos jQuery a una página para manejar actualizaciones de UI que se están generando a través de JSF. Por desgracia, JSF es una mierda y tiene eventos onclick en todo, lo que evita cualquier trabajo de jQuery.Tratando con `return false` cuando se usa` eval`in JavaScript
Gracias a la buena gente aquí en la SO, he encontrado una solución para eso:
mixing my jQuery click events with existing object's onclick attribute
La lógica es:
- al cargar la página, agarrar todos los
onclick
atributos y almacenarlos en una variable. - se unen mis eventos jQuery
- después de mis propios eventos de jQuery, que puede entonces
eval
el original onclick:eval(onclickValueVariable)
Esto funcionó encontrar en todas mis pruebas evento onclick maniquí.
Pero luego falló en esa página en vivo JSF. La cuestión es que todos los fines de la onclick con un 'return false' que conduce a este error:
return not in function
Por ejemplo:
<div class="uglyJSFcreatedTag" onclick="console.log('hey');return false">
Y el jQuery que dispararla:
var $jsfTag = $('.uglyJSFcreatedTag');
var cacheOnclick = $jsfTag.attr(onclick);
$jsfTag.removeAttr('onclick');
...bunch of logic here to decide if the inline onclick should fire and, if so...
eval(cacheOnclick)
El problema es el return false
. Parece que no se puede devolver nada al disparar una evaluación.
¿Existe una solución para esto? Me imagino que podría tomar el valor como una cadena y hacer una cadena de análisis para eliminar todo devolver falso, luego llamar eso desde el script en sí. Pero eso suena un poco desordenado. ¿Hay una solución más elegante?
Si no, ¿qué enunciados JS concretos debería buscar para filtrar antes de llamar al eval
?
Honestamente no tengo ni idea de lo que estás tratando de hacer, pero creo que puedo ayudarte. – mowwwalker
¿Por qué no agregas a todos tus oyentes de la misma manera? es decir, todos usan JSF o todos usan jQuery. – RobG
No estoy escribiendo el JSF. Y no veo cómo agregar más lógica UI a través del camino hacia atrás JSF sería un paso en la dirección correcta. Mi trabajo es hacer que la interfaz de usuario funcione lo mejor que pueda, dado lo que el equipo de JSF me ofrece. Se remonta a los días de trabajo de SharePoint ... piratea sobre hacks. ;) –