Hace poco hice un gadget para iGoogle y Blogs. Básicamente era un script q levantaba info de una web, mediante regex parseaba los datos y mostraba un html sencillo.
Nada del otro mundo, pero no tenía idea de como levantar información de otra página con JS. Después de consultar en algunos foros y leer un poco, logré mi objetivo.
Ahora quiero hacer algo parecido, pero necesito leer el contenido de una página, obtener una URL y esa URL parsearla para mostrar un html.
Hasta ahora tengo lo siguiente:
Código:
La función getFecha carga una URL, ResponseF mediante regex guarda en FechaURL[0] "fecha7.htm". Lo q yo necesito, es leer el contenido de "http://www.fuialapelota.com.ar/OCAMPO%20A/fecha7.htm", parsear y mostrar el contenido html como siempre.<?xml version="1.0" encoding="UTF-8" ?> <Module> <ModulePrefs title="Fixture Fui a la Pelota" description="Fixture" author="azeos" height="310" /> <Content type="html"> <![CDATA[ <script type="text/javascript"> var FechaURL = new Array(); var URLfix = ""; function getFecha() { var ParamsF = {}; ParamsF[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT; var URLf = "http://www.fuialapelota.com.ar/OCAMPO%20A/index.htm"; // URL a parsear gadgets.io.makeRequest(URLf, ResponseF, ParamsF); }; function ResponseF(obj) { RegFecha = /(fecha\d.*\.htm)(?=">\s*?<img .*? alt="FIXTURE")/g; // Regex para la fecha Fecha = obj.text; // Guarda el contenido de la URL en Fecha FechaURL = Fecha.match(RegFecha); // Guarda la URL de la fecha en el array FechaURL }; document.write(getFecha()); function getFixture() { var ParamsFix = {}; ParamsFix[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT; URLfix = "http://www.fuialapelota.com.ar/OCAMPO%20A/"+FechaURL[0]; // URL a parsear gadgets.io.makeRequest(URLfix, ResponseFix, ParamsFix); }; function ResponseFix(objfix) { Fixture = objfix.text; document.write(FechaURL[0]); }; gadgets.util.registerOnLoadHandler(getFixture); </script> ]]> </Content> </Module>
El problema es q desde la función "getFixture" no puedo leer el contenido del array FechaURL. Me dice q no está definido, y si lo defino desde afuera de la función y le asigno un valor, lee ese valor y no el q le asigna la función "getFecha".
Probé las funciones por separado y cada una hace lo q tiene q hacer.
En fin, lo q necesito es poder leer el valor de un array desde otra función. Probé pasar los valores sin todo lo de la API de google y funciona... así q no entiendo q es lo q estoy haciendo mal.
Queda claro q no se mucho del tema, tampoco se si estoy aplicando bien lo q se refiere a "[url=http://code.google.com/intl/en/apis/gadgets/docs/remote-content.html]remote content[/url]". Si bien lo leí todo, no me quedó del todo claro...
Esto es lo q hice y anda:
Código:
El único problema, es q a veces queda cargando iGoogle infinitamente. Pero eso para después :P<?xml version="1.0" encoding="UTF-8" ?> <Module> <ModulePrefs title="Posiciones Fui a la Pelota" description="Tabla de posiciones" author="azeos" height="310" /> <Content type="html"> <![CDATA[ <script type="text/javascript"> function getWeb() { var params = {}; params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.TEXT; var url = "http://www.fuialapelota.com.ar/OCAMPO%20A/posiciones.htm"; // URL a parsear gadgets.io.makeRequest(url, response, params); }; function response(obj) { RegTeam = /(\w.*)(?=<\/td>\s*?<td\sstyle="font-size: 12\.0pt)/g; // Regex para los equipos RegPts = /(\d.*)(?=<\/td>\s*?<td\sstyle="font-family: Arial.*?E\d)/g; // Regex para los puntos Tabla = obj.text; // Guarda el contenido de la URL en Tabla Tabla = Tabla.replace(/\t/g, ""); // Reemplaza las tabulaciones por espacios Tabla = Tabla.replace(/Machinguns/g, "MACHINGUNS"); // Machinguns en mayusculas Team = new Array(); Pts = new Array(); Team = Tabla.match(RegTeam); // Guarda los equipos en el array Team Pts = Tabla.match(RegPts); // Guarda los puntos en el array Pts // Imprime la tabla de posiciones document.write("<ul style='list-style:none; margin:0 0 1.25em; padding:0'>\n"); for (i = 0; i < Team.length; i++) { document.write("<li "); // Estilo document.write("style='font:small Trebuchet MS,Verdana,Arial,Sans-serif; color:#ffffff; background:url(http://www2.blogblog.com/rounders3/icon_arrow_sm.gif) no-repeat 2px .25em; margin:0; padding-top:0; padding-right:0; padding-bottom:3px; padding-left:16px; margin-bottom:3px; border-bottom:1px dotted #000000; line-height:1.4em'>"); // Equipos document.write(Team[i]+" "+Pts[i]+"</li>"); if (i != Team.length) { document.write("\n"); }; }; document.write("</ul>"); }; gadgets.util.registerOnLoadHandler(getWeb); </script> ]]> </Content> </Module>
Saludos y desde ya muchas gracias.