2012-06-14 6 views
5

コンソール(存在する場合)にさまざまなパフォーマンスメトリックを記録しています。このコンテンツは表として最もよく見られ、FireBugのconsole.table()メソッドはうまくいきますが、ほとんどのユーザーはChromeにあります。chromeでfirebugのconsole.tableを実装する

console.table()は、専用のUIコントロールを構築して管理する必要なく、整形されたUIスタイルのグリッドを取得できるため、優れたソリューションです。現在、Chromeでは、書式なしのテキストのみを記録できます。

HTMLコンテンツをコンソールにレンダリングする方法がある場合は、それも機能します。私はコンソールにhtmlを送ることができますが、DOMコンテンツが要素タブに表示されるのでレンダリングします。私はインスペクタが単なるHTML/JS/CSSであることを知っているので、技術的に可能です。実際、私は検査官を検査するときにそれをすることができます - しかし、これは現実の世界の問題を解決しません。

+0

独自のChrome拡張機能を作成することを考えていましたか? – Tadeck

+0

これは有効なオプションですが、アプリのすべてのユーザーがこれを行うことはできません。主な使用例は次のとおりです。お客様は、アプリが遅いと判断してサポートを呼び出します。サポートは、 "あなたのコンソールを開いて、私に結果をコピー/ペーストしてください"と言う。顧客はすべてをコピー/ペーストすることができますが、サポートは結果を検証するかどうかはしません。私は完全な画像を持っていないパフォーマンスデータの電子メールを取得します。それがエラーの可能性を減らすような方法でブラウザに焼き付けられるなら、それは理想的です。 – Christopher

+0

あなたがペーストしたものを得ることでそれを使用できるようにするには、テーブルデータに対して 'JSON.stringify()'を使い、それを取得し、電子メールに貼り付けて送信します。それを受け取った後は、デシリアライズされたデータを取得するだけで、テーブルである必要はありません。それはあなたに合っていますか? – Tadeck

答えて

4

でそれを行うことができ、私は同じ問題を抱えていたし、以下のコードを書きました。これはconsole.tableのような完全な機能ではなく、レコードの配列のみを受け入れ、列のリストを取りません。出力も素晴らしくはありませんが、それだけで十分でした。例:

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

そしてその背後にあるコード:

// 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(やや曖昧な形で作成された)質問に対する回答ではないにもかかわらず、有用なハッキングであるため+1。 –

0

は、それはまた、今日のようクローム31とFirefox 25で動作

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

内でパッドを動かしました。

+0

クリーンなFirefox 25.0.1ではサポートされていません(おそらく、Firebugをページでアクティブにしてみたことがあります) – Victor

関連する問題