2012-06-14 26 views
5

Tôi đang ghi nhật ký các chỉ số hiệu suất khác nhau vào bảng điều khiển (nếu có). Nội dung này được xem tốt nhất dưới dạng bảng và phương thức console.table() của FireBug hoạt động tốt - nhưng hầu hết người dùng của tôi đều ở trong Chrome.Triển khai bảng điều khiển của firebug.trong chrome

console.table() là một giải pháp tuyệt vời, bởi vì tôi nhận được một giao diện người dùng được định dạng đúng lưới mà không cần phải xây dựng và duy trì một điều khiển giao diện người dùng chuyên dụng. Hiện tại, trong Chrome, tôi chỉ có thể đăng nhập văn bản chưa được định dạng.

Hoặc, nếu có cách nào đó để hiển thị Nội dung HTML trong bảng điều khiển, điều đó cũng sẽ hoạt động. Tôi có thể gửi html tới giao diện điều khiển, nhưng nó hiển thị dưới dạng nội dung DOM trong tab yếu tố. Tôi biết thanh tra chỉ là HTML/JS/CSS - vì vậy về mặt kỹ thuật có thể. Trong thực tế, tôi có thể làm điều đó khi tôi kiểm tra thanh tra - nhưng điều này không giải quyết được vấn đề cho thế giới thực.

+0

Bạn đã từng nghĩ đến việc tạo tiện ích mở rộng của Chrome riêng chưa? – Tadeck

+0

Đó là một tùy chọn hợp lệ, nhưng không phải tất cả người tiêu dùng của ứng dụng đều có thể thực hiện việc này. Trường hợp sử dụng chính là: khách hàng cho rằng ứng dụng chậm và gọi Hỗ trợ. Hỗ trợ cho biết, "hãy mở bảng điều khiển của bạn và sao chép/dán cho tôi kết quả". Khách hàng có thể hoặc không thể sao chép/dán mọi thứ và Hỗ trợ có thể hoặc không thể xác nhận kết quả. Sau đó tôi nhận được email có dữ liệu hiệu suất không có hình ảnh đầy đủ. Nếu nó được đưa vào trình duyệt theo cách làm giảm khả năng xảy ra lỗi, điều đó lý tưởng. – Christopher

+0

Nếu bạn muốn nó theo cách bạn sẽ có thể sử dụng nó bằng cách nhận được những gì người dùng dán, bạn chỉ có thể sử dụng 'JSON.stringify()' trên dữ liệu bảng của bạn và yêu cầu người dùng tải nó, dán vào email & gửi. Sau khi nhận được nó, bạn chỉ nhận được dữ liệu deserialized, nó thậm chí không cần phải là một bảng. Điều đó có phù hợp với bạn không? – Tadeck

Trả lời

4

tôi đã cùng một vấn đề và viết mã dưới đây. Nó không phải là đầy đủ tính năng như console.table, nó chỉ chấp nhận một mảng các bản ghi, và không có một danh sách các cột. Đầu ra cũng không đẹp, nhưng nó đủ cho tôi. Một ví dụ:

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

Và mã đằng sau nó:

// 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 để trở thành một bản hack hữu ích, ngay cả khi không phải là câu trả lời cho câu hỏi (hơi mơ hồ). –

0

chuyển pad bên

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

Nó cũng hoạt động trong Chrome 31 và Firefox 25 đến ngày hôm nay.

+0

Nó KHÔNG được hỗ trợ trong Firefox 25.0.1 sạch (có thể bạn đã thử nó với Firebug đang hoạt động trên một trang) – Victor

Các vấn đề liên quan