2012-06-14 17 views
5

Estoy registrando varias métricas de rendimiento en la consola (si está presente). Este contenido se ve mejor como una tabla, y el método console.table() de FireBug funciona muy bien, pero la mayoría de mis usuarios están en Chrome.Implementa la consola de firebug.table en cromo

console.table() es una excelente solución, ya que obtengo una cuadrícula de estilo de interfaz de usuario bien formateada sin la necesidad de crear y mantener un control de IU dedicado. Actualmente, en Chrome, solo puedo registrar texto sin formato.

Alternativamente, si hay una manera de renderizar contenido HTML en la consola, eso funcionaría también. Puedo enviar html a la consola, pero se muestra como el contenido DOM en la pestaña de elementos. Sé que el inspector es solo HTML/JS/CSS, por lo que es técnicamente posible. De hecho, puedo hacerlo cuando inspecciono al inspector, pero esto no resuelve el problema para el mundo real.

+0

¿Ha estado pensando en construir su propia extensión de Chrome? – Tadeck

+0

Es una opción válida, pero no todos los consumidores de la aplicación podrán hacerlo. El caso de uso principal es: un cliente piensa que la aplicación es lenta y llama a Soporte. El soporte dice: "abra la consola y copie/pegue los resultados". El cliente puede o no copiar/pegar todo y el Soporte puede o no validar el resultado. Luego recibo un correo electrónico con datos de rendimiento que no tienen la imagen completa. Si está integrado en el navegador de tal manera que reduce la posibilidad de errores, es ideal. – Christopher

+0

Si lo desea de la manera en que lo podrá usar obteniendo lo que el usuario pegó, simplemente puede usar 'JSON.stringify()' en los datos de su tabla y decirle al usuario que lo obtenga, pegue en el correo electrónico y envíelo. Después de recibirlo, obtienes datos deserializados, ni siquiera necesita ser una tabla. ¿Eso te acomoda? – Tadeck

Respuesta

4

que tenía el mismo problema y escribió el código de abajo. No está tan completo como console.table, solo acepta una matriz de registros y no incluye una lista de columnas. El resultado tampoco es tan bueno, pero fue suficiente para mí. Un ejemplo:

$ console_table([{who:"World",message:"Hello"} 
       ,{who:"My wife",message:"Good Morning!"}]) 
|who |message  | 
|World |Hello  | 
|My wife|Good Morning!| 

Y el código detrás de él:

// Will be available in the latest Chrome, then I can delete this 
function console_table(xs) 
{ 
    if (xs.length === 0) 
     console.log("No data"); 
    else 
    { 
     var widths = []; 
     var cells = []; 
     for (var i = 0; i <= xs.length; i++) 
      cells.push([]); 
     for (var s in xs[0]) 
     { 
      var len = s.length; 
      cells[0].push(s); 
      for (var i = 0; i < xs.length; i++) 
      { 
       var ss = "" + xs[i][s]; 
       len = Math.max(len, ss.length); 
       cells[i+1].push(ss); 
      } 
      widths.push(len); 
     } 
     var s = ""; 
     for (var x = 0; x < cells.length; x++) 
     { 
      for (var y = 0; y < widths.length; y++) 
       s += "|" + pad(widths[y], cells[x][y]); 
      s += "|\n"; 
     } 
     console.log(s); 
    } 
} 

function pad(n,s) 
{ 
    var res = s; 
    for (var i = s.length; i < n; i++) 
     res += " "; 
    return res; 
} 
+0

+1 por ser un truco útil, incluso si no _precisamente_ una respuesta a la pregunta (un tanto vagamente formada). –

0

trasladaron almohadilla interior

// Will be available in the latest Chrome, then I can delete this 
function console_table(xs) 
{ 

    function pad(n,s) 
    { 
     var res = s; 
     for (var i = s.length; i < n; i++) 
      res += " "; 
     return res; 
    } 

    if (xs.length === 0) 
     console.log("No data"); 
    else 
    { 
     var widths = []; 
     var cells = []; 
     for (var i = 0; i <= xs.length; i++) 
      cells.push([]); 
     for (var s in xs[0]) 
     { 
      var len = s.length; 
      cells[0].push(s); 
      for (var i = 0; i < xs.length; i++) 
      { 
       var ss = "" + xs[i][s]; 
       len = Math.max(len, ss.length); 
       cells[i+1].push(ss); 
      } 
      widths.push(len); 
     } 
     var s = ""; 
     for (var x = 0; x < cells.length; x++) 
     { 
      for (var y = 0; y < widths.length; y++) 
       s += "|" + pad(widths[y], cells[x][y]); 
      s += "|\n"; 
     } 
     console.log(s); 
    } 
} 
1

También funciona en Chrome 31 y Firefox 25 a partir de hoy.

+0

NO es compatible con Firefox 25.0.1 (tal vez lo probaste con Firebug activo en una página) – Victor

Cuestiones relacionadas