Uso de eval

Para que sireve exactamente eval? ¿Cómo se usan las comillas a los argumentos que se pasan a esta función?
La estoy usando para pasarle un trozo de codigo html y me sustituya la variable myurl (var myurl= "http://www.loque/ sea.com/cgi-bin/mycgi?var1="+variable1+ "&var2="+variable2;) por su contenido. Y a su vez escribirlo dentro de una ventana. Pongo aqui la linea de código donde la uso.
newVentana.document.write(eval("<frame name='abajo' src=" + myurl + " marginwidth='0' marginheight='0' scrolling='no' frameborder='0'>"));
Me funciona pero me da errores de sintaxis. ¿Alguien sabe por qué?

1 Respuesta

Respuesta
1
En tu ejemplo, puedes quitar el eval(). Funcionará perfectamente si le añades unas comillas simples a lo que va en src:
newVentana.document.write("<frame name='abajo' src='" + myurl + "' marginwidth='0' marginheight='0' scrolling='no' frameborder='0'>");
Para más seguridad, "escapea" las barras / de myurl con barras \:
var myurl= "http:\/\/www.loque sea.com/cgi-bin/mycgi?var1="+variable1+ "&var2="+variable2;
Eso es porque, en teoría, un interprete de JavaScript pijotero podría terminar la línea al encontrarse con dos barras // (son la marca de comentario).
Por otro lado, eval() lleva dentro cualquier cosa que sea una cadena de caracteres, o una función que devuelva una, y lo ejecuta como si fuera el código que estuviera escrito ahí. Nada más (pero tampoco nada menos). Es muy útil, a veces, pero no abuses. Puede llevar a errores muy difíciles de depurar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas