> Manuales > Prácticas Javascript marcadas como obsoletas

Se trata de un sencillo script Javascript para recoger los parámetros que le llegan a una página por la URL (querystring).

Este script no lo recomendamos porque hace uso de prácticas que pueden derivar en problemas de seguridad e inyección de código XSS, como la función eval() y el hecho de usarla para crear variables desde los datos recibidos por parámetros en la url, algo que es bastante peligroso y en conjunto puede ser un cocktel todavía más conflictivo. Recomendamos estudiar el objeto location que nos ofrece la propiedad location.search y a partir de ella crear el reconocimiento de los datos que necesitemos y hacerlo exclusivamente para las variables esperadas y no de manera genérica como se hace en este script. Si lo quieres leer para orientarte en algo ten estas consideraciones en cuenta para no cometer los fallos de seguridad que tiene.

El script siguiente se colocará "a pelo" en la página que debe de recibir los parametros, o podrá copiarse en un fichero .js vinculado. En ambos casos el código no debe estar en ninguna función, para que se ejecute siempre que se carga la página.

Una vez se haya ejecutado el script tendremos los valores recibidos en las correspondientes variables. Aquellas que no hayamos recibido tendrán el valor por defecto que hamos fijado.

El Código:

<!DOCTYPE html>
<html lang="es">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Recoger parámetros del querystring</title>
</head>
<body>
  <script>
    //Autor: Bruno Suárez Laffargue
    //Version: 1.1

    //Definimos las variables necesarias
    variable = ''; // Habrá que establecerlo

    //Capturamos la URL
    var callingURL = document.URL;

    //Separamos los parametros
    var cgiString = callingURL.substring(callingURL.indexOf('?') + 1, callingURL.length);

    //Fijamos el sepador entre parametros
    var DELIMETER = '&';

    //Eliminamos la almohadilla, si es que existe... cortamos por lo sano!
    if (cgiString.indexOf('#') != -1) {
      cgiString = cgiString.slice(0, cgiString.indexOf('#'));
    }

    //Troceamos el cgiString ya limpiado, separando cada par variable=valor
    //en una de las posiciones del array
    var arrayParams = cgiString.split(DELIMETER);

    //Recorremos el array de parametros evaluando cada uno de los pares variable=valor
    for (var i = 0; i < arrayParams.length; i++) {
      eval(arrayParams[i].substring(0, arrayParams[i].indexOf('=') + 1) + "\"" +
        arrayParams[i].substring(arrayParams[i].indexOf('=') + 1, arrayParams
        [i].length) + "\"");
    }
    console.log(arrayParams, x, y);
  </script>
</body>
</html>

Para que funcione tendrás que abrir la página enviando parámetros, como esto:

http://localhost/recoger-parametros.html?x=1&y=2&lala=hola

Entonces te creará las variables:

Una de las restricciones funcionales para que esto haga su trabajo es tener tantas variables javascript definidas como parametros se van a recibir, inicializadas a un valor por defecto. Además estas variables han de llamarse exactamente igual que los parametros, ya que si no, no funciona.

Bruno Suárez Laffargue

Analista/Programador

Manual