2012-06-14 16 views
5

Zapisuję różne dane o wydajności na konsoli (jeśli są obecne). Ta treść jest najlepiej widoczna jako tabela, a metoda FireBug console.table() działa świetnie - ale większość moich użytkowników jest w Chrome.Wdrażaj konsolę firebug'a w chrome

console.table() to świetne rozwiązanie, ponieważ otrzymuję dobrze sformatowaną siatkę w stylu interfejsu użytkownika, bez potrzeby budowania i utrzymywania dedykowanego sterowania interfejsem użytkownika. Obecnie w Chrome mogę logować tylko niesformatowany tekst.

Alternatywnie, jeśli istnieje sposób na renderowanie zawartości HTML w konsoli, to też by działało. Mogę wysyłać html do konsoli, ale renderuje, jak robi to zawartość DOM na karcie elementów. Wiem, że inspektor to tylko HTML/JS/CSS - więc jest to technicznie możliwe. W rzeczywistości mogę to zrobić, gdy sprawdzam inspektora - ale to nie rozwiązuje problemu dla prawdziwego świata.

+0

Czy zastanawiałeś się nad zbudowaniem własnego rozszerzenia przeglądarki Chrome? – Tadeck

+0

Jest to ważna opcja, ale nie wszyscy użytkownicy aplikacji będą mogli to zrobić. Podstawowy przypadek użycia: klient uważa, że ​​aplikacja działa wolno i dzwoni do pomocy technicznej. Wsparcie mówi "proszę otwórz konsolę i skopiuj/wklej mi wyniki". Klient może, ale nie musi, kopiować/wklejać wszystko, a Wsparcie może lub nie może potwierdzić wyniku. Otrzymuję wiadomość e-mail z danymi o skuteczności, które nie mają pełnego obrazu. Jeśli jest upieczony w przeglądarce w taki sposób, że zmniejsza prawdopodobieństwo błędów, jest to idealne. – Christopher

+0

Jeśli chcesz, w jaki sposób będziesz mógł go używać, pobierając to, co wkleił użytkownik, możesz po prostu użyć 'JSON.stringify()' w danych tabeli i powiedzieć użytkownikowi, aby go pobrać, wkleić do e-maila i wysłać. Po otrzymaniu go otrzymujesz po prostu deserializację danych, nie musi to być nawet tabela. Czy to ci pasuje? – Tadeck

Odpowiedz

4

miałem ten sam problem i napisał poniższy kod. Nie jest tak w pełni funkcjonalny jak konsola.table, akceptuje tylko tablicę rekordów i nie pobiera listy kolumn. Wynik również nie jest tak miły, ale to mi wystarczyło. Przykład:

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

I kod za nim:

// 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 za bycie przydatnym hackem, nawet jeśli nie jest to odpowiedź na (nieco niejasno sformułowane) pytanie. –

0

przeniósł pad wewnątrz

// 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

Działa również w Chrome i Firefox 31 25 do dnia dzisiejszego.

+0

NIE jest on obsługiwany w czystym Firefoksie 25.0.1 (może próbowałeś go z Firebug aktywnym na stronie) – Victor