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 propiedadlocation.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:
x
con el valor "1
"y
con el valor "2
"lala
con el valor "hola
"
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