Intel goes Web 2.0

Intel acaba de estrenarse en la web 2.0 publicando una API de acceso al sistema: Intel Web 2.0 Technology Development Kit (TDK). Así, es posible acceder al entorno de ejecución desde nuestra aplicación corriendo en un navegador, por ejemplo para ver cuanta batería queda, la conectividad y ancho de banda, espacio en disco, cantidad de memoria, geoposicionamiento (si lo tiene), incluso obtener información del hardware instalado como dirección MAC o fabricante. En la Intel Web 2.0 TDK Developer Guide (PDF) se describe con detalle.

El mal acecha…

Gracias Joe Hewitt

Hay veces en las que un agradecimiento no es suficiente:

Firebug - Web Development Evolved

¿Te haces una idea las de horas de curro que ha ahorrado este tipo con su Firebug? Mínimo se merece una ayuda.

Si aun no sabes de lo que es capaz Firebug mira esta vídeo (en inglés) por el propio autor. O esta transcripción (en inglés) de Lauren García.

Gracias Joe Hewitt.

DhtmlHistory (+ bug en IE7)

dhtmlHistory

DhtmlHistory es un interesante mini framework para simular el comportamiento del botón “Atrás” en aplicaciones web realizadas con AJAX, desarrollado por Brad Neuberg.

En la página del autor podeis encontrar varios ejemplos de funcionamiento junto a una explicación mas detallada, así como descargaros la última versión.

Error en IE7

A continuación un caso curioso que me ha acontecido recientemente usando DhtmlHistory junto a IE7.

Estamos desarrollando una aplicación web con AJAX que requería controlar el botón “Atrás”. En IE7 experimentaba un comportamiento extraño al cambiar estilos dinámicamente, siempre que tenían que ver con ocultar o mostrar partes de la página. El efecto era que la página se desplazaba o centraba en la venta aleatóriamente.

Finalmente pudimos comprobar que eliminando el javascript dhtmlHistory.js el efecto no se producía. Centrados en el objeto de error nos dimos cuenta gracias al DOM Explorer Toolbar que el HTML se estaba generando incorrectamente, con todo el código HTML en la etiqueta HEAD y únicamente con un TEXTAREA en el BODY:

DOM Explorer Toolbar for IE

Al eliminar el dhtmlHistory.js, el HTML se generaba corréctamente. Supongo que, pese a que renderizaba bien el HTML generado por incorrecto que fuese (recuperación de errores lo llaman), cuando se aplicaban estilos de manera dinámica se hacía incorrectamente al encontrarse en el HEAD.

La solución

La solución es sencilla: generar el HTML necesario una vez que la página se ha cargado, para lo que se han modificado los métodos init() y create() en dhtmlHistory.js:

init():

   /** private */ init: function() {
      // write a hidden form into the page
      var styleValue = "position: absolute; top: -1000px; left: -1000px;";
      if (this.debugging == true) {
         styleValue = "width: 30em; height: 30em;";
      }

      var newContent =
         "<form id='historyStorageForm' "
               + "method='GET' "
               + "style='" + styleValue + "'>"
            + "<textarea id='historyStorageField' "
                      + "style='" + styleValue + "'"
                              + "left: -1000px;' "
                      + "name='historyStorageField'></textarea>"
         + "</form>";
      document.body.innerHTML+=newContent; // CHANGED:

      this.storageField = document.getElementById("historyStorageField");

   },


create():

   /** private */ create: function() {
      // get our initial location
      var initialHash = this.getCurrentLocation();

      // save this as our current location
      this.currentLocation = initialHash;

      // write out a hidden iframe for IE and
      // set the amount of time to wait between add() requests
      if (this.isInternetExplorer()) {
         var aux = "<iframe style='border: 0px; width: 1px; "
                               + "height: 1px; position: absolute; bottom: 0px; "
                               + "right: 0px; visibility: visible;' "
                               + "name='DhtmlHistoryFrame' id='DhtmlHistoryFrame' "
                               + "src='blank.html?" + initialHash + "'>"
                               + "</iframe>";
        document.body.innerHTML+=aux; // CHANGED
         // wait 400 milliseconds between history
         // updates on IE, versus 200 on Firefox
         this.WAIT_TIME = 400;
      }

Y finalmente, mover la inicialización que hay al final del fichero al manejador de carga de la página, en nuestro caso:

    Event.observe(window, 'load', init_page, false);

    function init_page(){
        /* Initialize dhtmlHistory*/
        window.historyStorage.init();
        window.dhtmlHistory.create();
    }

Actualización [28.feb.2007]

La solución que aporta Stefan Gustafsson en los comentarios es bastante más secilla y además funciona en IE 5. Consiste en mover la inicialización al final de la página, os la recomiendo.

Que aproveche.

Herramientas para el desarrollo Web

Internet Explorer

  • View Partial Source: permite ver el código HTML del aréa seleccionada
  • CSS_Stylesheets: permite explorar las CSS que usa una página
  • IE Developer Toolbar, barra de desarrollo imprescindible
  • Fiddler, proxy de depuración que permite trazar todas las peticiones

Firefox

Eclipse

[Actualización 15.feb.2007]

Añadido Fiddler a Internet Explorer

FireBug se hace mayor

Está a punto de lanzarse la versión 1.0 de una de las mejores herramientas de desarrollo Web, esencial si trabajas con AJAX, su nombre es FireBug y para celebrarlo han creado su propia web.

Para quien no lo sepa es una extensión para FireFox con múltiples funcionalidades para la depuración de código HTML, CSS y Javascript, que entre otras cosas indica si se ha producido un error en la página, permite ver el código de los elementos seleccionados con el ratón y al seleccionar el código HTML remarcar el elemento visualmente, mostrar la consola javascript, depurar de la manera habitual, ver las peticiones XMLHttpRequest, etc.

Entre las nuevas funcionalidades, a parte de la mejora evidente de interfaz, están editar on the fly el HTML, las CSS y el Javascript; reglas de medición; monitorizar la actividad de red; explorador DOM; funciones de trazado

Hasta entonces puedes intalarte la extensión FireBug 0.4.1.