Hola:
Gracias
derkenuke, no sé si lo he mejorado un poco, pero al menos he conseguido poner unas líneas menos... me basé un poco en la idea de Andrés:
Código:
function receptor() {
var entrada = new Object();
if (location.href.indexOf("?") == -1) return;
params = location.search.substr(1).split("&");
for (var i = 0, total = params.length; i < total; i ++)
entrada[params[i].split("=")[0]] += " " + params[i].split("=")[1];
for (i in entrada) {
actual = entrada[i].split(" ").slice(1);
for (x = 0, total = actual.length; x < total; x ++)
actual[x] = unescape(actual[x]);
window[i] = (actual.length == 1) ? actual[0] : actual;
}
}
Y mientras escribía se me ocurrió otra manera según el tipo de los datos ("undefined" cuando es la primera asignación, "string" después de la primera asignación y "object" el resto de los casos):
Código:
function receptor() {
var entrada = new Object();
if (location.href.indexOf("?") == -1) return;
params = location.search.substr(1).split("&");
for (var i = 0, total = params.length; i < total; i ++) {
pareja = params[i].split("="); dato = unescape(pareja[1]);
switch (typeof(entrada[pareja[0]])) {
case "undefined": entrada[pareja[0]] = dato; break;
case "object": entrada[pareja[0]][entrada[pareja[0]].length] = dato; break;
case "string": temp = [entrada[pareja[0]], dato]; entrada[pareja[0]] = temp; break;
}
}
for (i in entrada) window[i] = entrada[i];
}
¿Cuál creen que es el mejor de los métodos...? ¿A alguien se le ocurre algo mejor?
Saludos