A veces las soluciones sencillas parecieran estar ocultas y sólo vienen a la mente
soluciones más complejas, que no siempre funcionan en todos los casos.
Hoy visité el sitio de Lan Chile para ver la cartola
con el estado de cuentas (como se muestra en la figura). El año seleccionado por
omisión es el 2006 (lógico, corresponde a este año). Sin embargo, al seleccionar
el año 2005 y presionar el botón «Ir» no funcionaba.
Al revisar la consola Javascript, me indicó un error, que una variable no existía (form1). Fue
allí, cuando encontré esta joyita de programación:
<h1>Estado de cuenta LANPASS</h1>
<form name="form1" action='#'>
<input type="hidden" name="base[mbr_username]" value="123456789">
<input type="hidden" id="year" name="year" value="">
<script type="text/javascript">
function mygoto(year)
{
form1.year.value = year;
form1.submit();
}
</script>
...
<select name="PeriodoConsulta" size="1">
<option value='2003' >2003</option>
<option value='2004' >2004</option>
<option value='2005' >2005</option>
<option value='2006' SELECTED>2006</option>
</select>
<input type='button'
onclick="mygoto(this.form.PeriodoConsulta.options[this.form.PeriodoConsulta.selectedIndex].text)"
value='Ir' class='boton' name="go">
...
En negrita se encuentran marcadas las partes relevantes. Se define un botón, y en vez de indicarle el tipo submit (no hay otros en toda la página), el programador prefirió dejarlo
normal y añadir código cuando el usuario lo accione. Allí comienza la vuelta: define una variable PeriodoConsulta en donde se encuentra el año, intenta obtener el valor de una forma rebuscada, y cuando lo tiene llama a una función (mygoto); allí le pasa el valor a otra variable (year) y luego envía el formulario.
Eso es lo que se conoce como «la vuelta del perro».
Seguramente esto lo programaron después del abrazo de año nuevo («déjame, si borracho programo mejor» :-). Antes funcionaba, así que es una
característica nueva. Claro que
dejó de funcionar solamente en
Firefox.
Para el caso ni siquiera se requiere Javascript para definir el año seleccionado, simplemente
saber un poco de HTML. Podría ser algo así:
<h1>Estado de cuenta LANPASS</h1>
<form name="form1" action='#'>
<input type="hidden" name="base[mbr_username]" value="123456789" />
...
<select name="year">
<option value='2003' >2003</option>
<option value='2004' >2004</option>
<option value='2005' >2005</option>
<option value='2006' SELECTED>2006</option>
</select>
<input type='submit' value='Ir' class='boton' name="go" />
...
Llamé al número de servicio al cliente de Lan, y la respuesta que obtuve fue «pero si aquí
me funciona», le indiqué la línea del error y que usaba Firefox; y lo siguiente fue: «seguramente su sistema es muy
antiguo».
¿De qué forma le explico? Bueno ya, si a la URL basta añadirle «?year=2005» o el año
que quiera y obtengo los datos que requiero.
Mi pronóstico para este año es que de Lan Chile dirán que tienen certificación
CMM-I. ¡Oh no! Ya
tienen certificación CMM-I (nivel 2).
Ojo, estoy conciente que errores cometemos todos y que nadie nace sabiendo.
Pero sirve para:
- Que las empresas sean grandes, no significa que sus programas son perfectos;
hasta en los más sencillos contienen errores.
- De contraejemplo cuando se quiera enseñar programación.
- En todas partes se cuecen habas.
Tal vez no lo hubiera escrito, de no ser por la inspiración que me dió la respuesta
telefónica.