Modificar una página con Javascript
12-08-2007
Para modificar una página con javascript es necesario conocer los componentes de la página. El javascript tiene acceso a esos componentes, puede modificarlos como se le cante, así que sólo oirlos mencionar ( y tener una idea de programación orientada a objetos ) abre las puertas a hacer cualquier cosa con la página.
Los principales son:
window - La ventana del navegador. Todo está dentro de la ventana del navegador, así que este es el componente más importante, de mayor jerarquía.
screen - La pantalla de la página.
document - La página en sí.
Lo importante es que puedan entender en qué parte de la página está lo que quieren modificar. Por ejemplo, si lo que quieren es crear una ventana emergente, entonces lo afectado va a ser la window, mientras que si lo que quieren es borrar el contenido de un título, lo afectado va a ser el document. Eso hace más fáciles las búsquedas en google ;).
Document
El document es un objeto de tipo “document”. La representación, en objeto, del HTML de la página.
Supongamos que tenemos esta página.
<html>
<head>
<title>Titulo</title>
</head>
<body>
Contenido
</body>
</html>
document, en este caso, tiene todo ese contenido. Lo importante es que como es un objeto, podemos obtener partes de ese contenido, y modificarlas. Por ejemplo, si queremos cambiar el título, hacemos esto:
<script type="text/javascript">
var titulo = document.getElementsByTagName('title')[0];
titulo.innerHTML = “Nuevo título”;
</script>
getElementsByTagName es una función que devuelve un array con todos los elementos HTML que tengan la palabra que le pasamos como nombre del tag (en este caso, queríamos ‘title’. Agarramos el elemento 0, que es el primer elemento del array. De esa manera, la variable titulo es ahora el tag “title” de la página.
innerHTML es una variable que contiente el HTML que hay dentro del tag. Al modificarla, cambia el contenido del tag, y, en este caso, el título de la página.
Otra forma de obtener un elemento de la página y modificarlo. Supongamos que tenemos esta página HTML:
<html>
<head></head>
<body>
<div id="principal">
Esta es la división principal.
</div>
</body>
</html>
y queremos cambiar el contenido del div “principal”. Sencillo, hacemos esto:
<script type="text/javascript">
var principal = document.getElementById('principal');
principal.innerHTML = "Nuevo contenido de la división principal";
</script>
getElementById es una función del document que devuelve el elemento que corresponde con el id dado. Como se supone que solamente un elemento tiene ese determinado id, devuelve solamente ese. Si hay más de un elemento con ese id.. hará lo que al navegador se le cante que haga. Eviten por todos los medios que haya más de un elemento con el mismo id.
Después sigo explicando.
Links útiles sobre Javascript (todo en inglés, disculpen)
- http://javascript.crockford.com/
- http://simon.incutio.com/slides/2006/etech/javascript/js-reintroduction-notes.html
- http://www.yourhtmlsource.com/javascript/
No vas a poder desarrollar en javascript sin (y ni sueñes desarrollar javascript usando Internet Explorer):
- Aptana - Un IDE espectacular
- Firebug -Consola de depuración de JavaScript para Firefox. Incluye análisis del HTML, watches, profiling, es genial.
AJAX:
DOM:
XML (No es javascript pero es importantísimo)
¡Estoy muy emocionado! Ahora sí que me cae bien Google… que es el responsable de esta maravillosa biblioteca, destinada a salvarme y darme poder.
El inevitable link a la biblioteca AJAXSL
Google Code, que bien que me caen… no tienen idea, no tienen idea, lástima que cueste tanto explicar qué es el XSL…
Igual creo que hoy a la tarde lo hago
Perl - la perla de la programación sucia
18-08-2006
Existe un lenguaje de programación llamado “Perl” que, por lo que me estoy enterando, a los efectos de la progamación que aprendí yo antes y que me enseñó mi viejo - junto con los ideales de esa programación - es no sólo extraño, sino roñoso. En realidad, a mi viejo le encanta esa programación, pero no cuadra con los ideales que me transmitió. De todas maneras ahora entiendo porque le gusta, y en que aspecto son válidos esos ideales. Y esos ideales apuntan a un aspecto que a Perl directamente no le interesa, que es precisamente la limpieza y la formalidad, contra la velocidad.
Explico brevemente: un lenguaje de computación puede ser muy abstracto y genérico o estar apuntado a cumplir una tarea. Es el mismo caso de una persona especialista o generalista. Un especialista tendrá muchas definiciones muy minuciosas que le permitirán hacer rápidamente tareas muy complejas; términos técnicos, herramientas sólo útiles para un oficio. Por el contrario, un generalista se centrará en la definición, y necesitará mucha más burocracia para comprender una tarea concreta - aunque tiene el poder de realizar cualquier tarea, cosa que al especialista le es rotundamente negada.
A medida que los lenguajes de programación fueron evolucionando se fueron logrando bellas amalgamas de ambos sistemas, y Java es una, aunque orientada al modelo generalista (llamada Programación Orientada a Objetos, porque define el mundo como Objetos que tienen Propiedades (variables miembro en la jerga) y realizan Acciones (métodos en la jerga). Perl es otra, aunque orientada al modelo especialista en producir texto o acciones concretas sobre código ya hecho.
En concreto programación sucia se refiere a que no se respeta una clara forma en la sintaxis (el orden relativo de las palabras) ni en los tipos (los números pueden ser usados como palabras y las palabras como números sin dar error). Tiene sus problemas y es que si uno realiza grandes aplicaciones un pequeño error, por ejemplo sumar una palabra a un número cuando en realidad se quiere sumar el número que dice esa palabra, es extraordinariamente difícil de rastrear, ya que el programa anda igual, y leer código no es un entretenimiento de sábado a la noche. En cambio Java permite ser clarísimo con el manejo de errores, y es absolutamente estricto en cuanto a tipos y sintaxis.
De todas maneras, Perl me gusta y mucho. Otra ventaja grande que tiene: no necesita ser compilado. Es decir que el código que uno escribe es un programa de por sí si uno lo indica correctamente. Ustedes podrían copiar un código que yo pusiera en el blog, tal vez incluso de algo extraordinariamente útil, pegarlo en un archivo .pl, ejecutarlo en la línea de comando (Menú Inicio > Ejecutar) escribiendo Perl miarchivo.pl y ya les andaría. No sé que uso les parece de entra que puede servir, pero podría… para tantas, tantas cosas.
Es más, eso haría pensar que vale la pena aprender Perl… ^^