<html>
<body>
<input type="text" onFocus="javascript:findPosY()"/>
<script type="text/javascript">
eval( function findPosY(){alert("OK");});
</script>
</body>
</html>

Mientras se ejecuta el código anterior, no se llama a la función eval () y no se muestra la alerta.

1
i dont like this 30 may. 2011 a las 10:20

4 respuestas

La mejor respuesta

Su código hace una doble evaluación. Primero eval se usa para el controlador de eventos en línea (que por cierto no necesita la parte javascript:). A continuación, intente eval dentro de su etiqueta de script. Como lo indican otras respuestas, eval necesita una cadena. Pero en este caso, eval ling es completamente innecesario. Su fragmento debe escribirse así:

<html>
<body>
 <input type="text" onfocus="findPosY()"/>
 <script type="text/javascript">
  function findPosY(){
      alert("OK");
  }
 </script>
</body>
</html>
0
KooiInc 30 may. 2011 a las 07:02

Debe pasar una cadena a la función eval:

<html>
<body>
<input type="text" onFocus="javascript:findPosY()"/>
<script type="text/javascript">
eval( 'function findPosY(){alert("OK");}');
</script>
</body>
</html>
0
Farshid Zaker 30 may. 2011 a las 06:23

eval()

Evalúa una cadena de código JavaScript ...

Fuente.

2
alex 30 may. 2011 a las 06:32
<html>
<body>
<input type="text" onFocus="javascript:findPosY()"/>
<script type="text/javascript">
eval('(function (){alert("OK");})()');
</script>
</body>
</html>

Tenga en cuenta el paréntesis al final de la cadena que se está evaluando, esto llamará a la función.

0
Rodrigo 30 may. 2011 a las 07:08