Portabilizzare la console di Firebug

Prima della versione 1.2 di Firebug, l’unico problema in cui gli sviluppatori Javascript si potevano imbattere nel suo utilizzo era la necessita’ di scrivere una funzione di inizializzazione della console.
Tale funzione aveva il compito di definire le funzioni della console nel caso la classica console.log e sorelle venissero eseguite in browser senza Firebug.

Nelle versioni di Firebug 1.2 e successive e’ stata introdotta la funzione loadFirebugConsole, senza la quale la console non parte. Questo richiede un refactoring della funzione di inizializzazione; gia’ che dovevo metterci le mani, ho pensato: perche’ non modificare la funzione in modo tale da poter usare le i metodi della console anche su Opera ed il suo tool di debugging, Dragonfly?

Detto fatto: Opera implementa una funzione simile alla console.log, chiamata opera.postError, che useremo per fare l’overload di tutti i metodi definiti nella console. Ecco il codice finale.

if ( typeof window.loadFirebugConsole == 'function' ) {
  window.loadFirebugConsole();
} else {
  if ( !(window.console && window.console.log) ) {
    if ( window.opera && window.opera.postError ) {
      fConsole = window.opera.postError;
    } else {
      fConsole = function() {};
    }
    window.console = {
      log:    fConsole,
      debug:  fConsole,
      info:   fConsole,
      warn:   fConsole,
      assert: fConsole
    }
  }
}

Ispirazione:
http://traviscline.com/blog/2008/04/02/firebug12-console-is-not-defined/
http://dev.opera.com/forums/topic/231622

  • Digg
  • del.icio.us
  • Facebook
  • StumbleUpon
  • Technorati
  • Twitter

Tags: , , , , ,

Leave a Reply