Sonido
CSS
Dreamweaver
Ridiculeces
Artículos
Site Check
JavaScript


 


Aviso:
Me he trasladado a:
http://www.tecnorama.org
(con algunos de estos contenidos y otros nuevos)
Si en la página anterior introduciste valores en el formulario, aquí tienes el resultado (comparar con la URL)

Procesar la URL

El siguiente paso es recoger los argumentos en un formato un poco más práctico.
Esto se hace utilizando "indexOf()" y "split()" para separar la cadena en trozos más pequeños.
Estos trozos son posteriormente introducidos en un array.
El autor decidió crear un objeto que manejara esto así como poder utilizar simplemente las llamadas a unos métodos personalizados.
La instancia del objeto (a la que yo he llamado para el ejemplo "mi_objeto) se crea así::

var mi_objeto = new ArgumentURL();
(es decir creamos una copia de argumentURL(),que he llamado "mi_objeto"que heredará todas sus funciones y métodos)

Este objeto hereda 3 métodos que permiten manipular los argumentos (y que son los que utilizaremos), son:

mi_objeto.leerArgumento(Nombre) Devuelve el valor como una cadena de caracteres (string). Si no encuentra argumentos con el nombre introducido, devuelve "null".

mi_objeto.escribirArgumento(Nombre, Valor) Crea un argumento con el nombre y valor declarados.

mi_objeto.quitarArgumento(Nombre) Elimina el argumento.

mi_objeto.toString() o simplemente mi_objeto. Creará una cadena que contendrá la parte final de la URL a partir del signo ? sumando todas los métodos
mi_objeto.escribirArgumento(Nombre, Valor) que hayamos creado

Esto es útil para enviar los argumentos.
Las siguientes sentencias cargarían el archivo pagina3.html con los argumentos que hemosdeclarado:

var mi_objeto = new ArgumentURL();
mi_objeto.escribirArgumento("nombre","Pepe");
mi_objeto.escribirArgumento("Poblacion","Oviedo");
window.location = "pagina3.html" + mi_objeto;

Devolvería una dirección como esta:
http://www.miservidor.com/pagina3?nombre=Pepe&Población=Oviedo

Para recuperar el valor de "nombre", sólo habría que poner:
var mi_objeto = new ArgumentURL();
mi_objeto.leerArgumento("nombre");


El código:

Éste es el código del archivo principal, argumenturl.js. Podéis copiarlo en el encabezado o copiarlo en la misma carpeta de las páginas que lo vayan a utilizar y enlazarlo en el <HEAD> con:
<SCRIPT src="argumenturl.js" type=text/javascript></SCRIPT>

  
function ArgumentURL() {
this.leerArgumento = _getArg;
this.escribirArgumento = _setArg;
this.quitarArgumento = _removeArg;
this.toString = _toString;
this.argumentos = new Array();

// Inicio
var separator = "&";
var equalsign = "=";

var str = window.location.search.replace(/%20/g, " ");
var index = str.indexOf("?");
var sInfo;
var infoArray = new Array();

var tmp;

if (index != -1) {
sInfo = str.substring(index+1,str.length);
infoArray = sInfo.split(separator);
}

for (var i=0; i<infoArray.length; i++) {
tmp = infoArray[i].split(equalsign);
if (tmp[0] != "") {
var t = tmp[0];
this.argumentos[tmp[0]] = new Object();
this.argumentos[tmp[0]].value = tmp[1];
this.argumentos[tmp[0]].name = tmp[0];
}
}


function _toString() {
var s = "";
var once = true;
for (i in this.argumentos) {
if (once) {
s += "?";
once = false;
}
s += this.argumentos[i].name;
s += equalsign;
s += this.argumentos[i].value;
s += separator;
}
return s.replace(/ /g, "%20");
}

function _getArg(name) {
if (typeof(this.argumentos[name].name) != "string")
return null;
else
return this.argumentos[name].value;
}

function _setArg(name,value) {
this.argumentos[name] = new Object()
this.argumentos[name].name = name;
this.argumentos[name].value = value;
}

function _removeArg(name) {
this.argumentos[name] = null;
}

return this;
}

 

Al margen de la utilidad del script, sirve también para ver cómo se pueden crear en JavaScript objetos y métodos personalizados (aunque tampoco es algo que se haga todos los días...)

Links relacionados:
Tutorial original de WEBFX

Autor: Erik Arvidsson