Antes q nada, perdón si esto no va acá; pero no se si es un problema con JS u otra cosa.
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:
<?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>
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.
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:
<?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>
El único problema, es q a veces queda cargando iGoogle infinitamente. Pero eso para después :P
Saludos y desde ya muchas gracias.