Foros del Web » Programando para Internet » Javascript »

Google gadget, variables globales

Estas en el tema de Google gadget, variables globales en el foro de Javascript en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 01/10/2010, 13:41
Avatar de azeos  
Fecha de Ingreso: junio-2008
Mensajes: 7
Antigüedad: 16 años, 4 meses
Puntos: 0
Google gadget, variables globales

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.

Etiquetas: gadget, globales, google, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:36.