¡Ahora si!
¡Por fin! Creo que el componente que armé para bajar info de Wikipedia ya funciona.
Si miran a la derecha, van a ver que la página les muestra una pequeña efemérides del día. Está información es aleatoria y cada 30 segundos cambia. Todo está obtenido de Wikipedia y los links conducen a ella.
El desarrollo de este componente fue un parto. Wikipedia ofrece una función de exportación en donde uno puede levantar un .xml de cualquiera de sus páginas. Mi idea era utilizar AJAX para levantar el .xml, parsearlo y luego mostarlo. Para ésto era necesario utilizar el componente XMLHttpRequest. Empecé a hacer pruebas y me di cuenta que este componente tiene una limitación bastante grande: no se pueden levantar archivos remotos. Con lo cual, intentar levantar el .xml de una dirección que no sea blogus.com.ar era imposible (bah… imposible no. IE tiene niveles de seguridad que lo permiten, pero Opera, Firefox y cualquier otro browser serio lo impedían por cuestiones de seguridad). Una boludez ya que mi intención no era modificar el archivo remoto, sino sólo leerlo.
Cuando consulté la documentación del DOM, leo que el XMLHttpRequest “no debería poder realizar consultas remotas”. Todos los browsers toman la frase a su gusto: “no debería” significa para IE que la seguirdad del browser es configurable. Para los demás, “no debería” significa “no se puede”.
El paso siguiente fue investigar alguna alternativa. Me encontré en muchos lugares que, si el browser no permite la conexión remota con XMLHttpRequest, se podía utilizar un iFRAME para hacer algo parecido. Reprogramé todo… y tampoco funcionaba. Al parecer, se dieron cuenta de que con iFRAME se puede hacer lo mismo que con XMLHttpRequest, entonces le agregaron la misma seguridad.
Resultado: es IMPOSIBLE levantar datos remotos de manera dinámica.
O casi…
Pensé, pensé y encontré una solución bastante… pava. Decidí levantar el archivo .xml que me brinda Wikipedia desde PHP usando simplemente un fopen(). Ese archivo lo guardo en una carpeta de blogus.com.ar y, luego si, uso XMLHttpRequest para levantar el .xml, parsearlo y hacer todas las pavadas que terminan generando lo que ven a la derecha. Lo único a tener en cuenta es que el parámetro de configuración del php.ini llamado allow_url_fopen debe estar habilitado para que el fopen() pueda levantar la URL remota.
En pocas palabras, la seguridad que tiene el XMLHttpRequest y el iFRAME me parece que está bastante de más, aunque seguramente existen algunos cráneos que así lo creen necesario. De todas maneras, esa seguridad es “salteable” desde PHP.
Bueno… esta sería la versión 0.9. Tengo que arreglarle algunas cosas de “como está desarrollado” que me va a llevar un ratito, pero bue… por lo menos ya funciona.
Si ven algún error o algo mal, ¡avisen!
Si a alguno le interesa saber más sobre como está desarrollado, avisen, ¿si?


