70

Tôi có một đối tượng cần kiểm tra trong IE8. Tôi đã thử các công cụ dành cho nhà phát triển và console.log, tương đương Firebug của chúng. Tuy nhiên, khi tôi ra đối tượng để đăng nhập:Làm cách nào để kết xuất các vars JavaScript trong IE8?

console.log("Element: ", element); 
console.log(element); 

tôi chỉ nhận được chuỗi

LOG: Element: [object Object] 

thay vì một nhấp được, bãi examinable.

Có thể kết xuất một đối tượng vào Nhật ký và kiểm tra các thành viên của nó, như trong Firebug không?

Tôi không thể sử dụng hàm dump() tự chế vì phần tử tôi muốn kiểm tra quá lớn nên trình duyệt sẽ gặp sự cố.

+12

Đáng buồn thay IE9 cũng làm như vậy. Lời nguyền bạn Microsoft! – Walf

Trả lời

101

Dưới đây là một kỹ thuật mà tôi đã tìm thấy hữu ích:

  • Mở Developer Tool Bar (hit F12)
  • Chuyển đến "Script" tab
  • Nhấp vào "Start Debugging" nút
  • Tiếp theo, gõ "gỡ rối" vào giao diện điều khiển và nhấn enter. Điều này sẽ kích hoạt điểm ngắt.
  • Chuyển đến tab phụ "Xem"
  • Nhấp vào hàng có nội dung "Nhấp để thêm ..." và nhập biến bạn muốn kiểm tra. Lưu ý rằng biến phải có sẵn trên toàn cầu.
  • Tại thời điểm này, bạn sẽ có thể kiểm tra biến của bạn với cây giống như giao diện người dùng
  • Khi bạn đã thực hiện gỡ lỗi bấm nút Continue (hoặc nhấn F5)
+1

Tôi không có thời gian để đi vào điều này ngay bây giờ, nhưng tôi khá chắc chắn nó sẽ giúp tôi. Cảm ơn các hướng dẫn từng bước. –

+41

Đọc điều này có vẻ như tôi đang tìm kiếm một mã lừa đảo trên GameFAQs ... –

+16

Tôi đặt cược Microsoft Developers ghét điều này. – alejandro

-1

console.log (element.toString()) có thể là bạn của bạn ở đây ...

+0

Ý tưởng tốt, nhưng thật đáng buồn, cùng một đầu ra ... –

+0

không nên làm việc này chắc chắn làm việc –

+4

Tôi không nghĩ rằng điều này xứng đáng một downvote - nó hoạt động hoàn toàn tốt, chỉ cần không phải là cách tôi cần. Downvotes nên được dành riêng cho blatantly * sai * câu trả lời. +1 để thậm chí nó ra. –

92

Một chút tắt chủ đề (như nó đã giành 't làm việc cho các yếu tố DOM) nhưng tôi thấy nó tiện dụng để sử dụng các JSON.stringify(object) để có được một chuỗi JSON cho đối tượng đó là khá dễ đọc.

+4

Giải pháp này là câu trả lời tốt hơn cho câu hỏi. Bằng cách này, nếu trình duyệt IE của bạn không hỗ trợ đối tượng JSON, bạn có thể sử dụng http://www.JSON.org/json2.js, đó là một dự phòng đẹp – daitangio

+0

chỉ cần lưu ý, nếu bạn cố gắng sử dụng kỹ thuật này cho các biến rất lớn ví dụ như các đối tượng jquery, bạn có thể gặp phải "Error: Out of memory". –

+51

** PROTIP **: Sử dụng 'JSON.stringify (obj, null," \ t ")' để làm cho đầu ra của 'stringify' dễ đọc hơn. – Xavi

3

Một gợi ý là sử dụng Firebug-Lite: Nó kết thúc tốt đẹp giao diện điều khiển obj và bạn có thể thấy kết quả trong IE giống như trong hầu hết bảng điều khiển firebug. Hy vọng sự trợ giúp này.

+0

1) cách cài đặt và sử dụng firebug-lite trên IE và các trình duyệt khác: http://www.makeuseof.com/tag/install-firebug -for-browsers-other-than-firefox 2) video về cách phá vỡ vấn đề đánh dấu trang cho bookmarklet firebug-lite trong IE: http://www.youtube.com/watch?v = vLJ2RaNZ22E – GuruM

+0

Đã cài đặt firebug-lite, nhưng 'console is undefined' là thông báo lỗi tôi nhận được. Đã thử googling cho câu trả lời nhưng không có may mắn được nêu ra. Nếu có ai biết cách loại bỏ vấn đề này, vui lòng trả lời lại tại đây. – GuruM

5

Nếu bạn đang làm việc với mã khó chịu và console.log không có sẵn, thử điều này trong giao diện điều khiển:

out = []; for (i in your_object) { out.push(i) } out.join("\n") 
13

@ Chris nhận xét câu trả lời @ Andy với các giải pháp đơn giản: Sử dụng console.dir(myObj) để có được tất cả các chi tiết được in ra trong bảng điều khiển trong IE. Cảm ơn Chris!

+0

Vâng, được rồi ^^ Ngớ ngẩn tôi không trả lời. Tôi nghĩ có đủ những thứ tốt ở đây. – Chris

+12

console.dir không có sẵn trong IE8: ( – erotte

+2

Ngoài ra .. console.dir không làm serialization sâu ... JSON.stringify hiện –

0

Tôi biết đây là một câu hỏi cũ thực sự, nhưng tôi đang tìm kiếm câu trả lời cho điều này ngay bây giờ. Nếu nó không phải là một yêu cầu tuyệt đối để sử dụng giao diện điều khiển IE (mà không phải là rất tốt, IMO), sau đó bạn có thể xem xét sử dụng Firebug Lite (http://getfirebug.com/firebuglite). Nó không phải là một giải pháp hoàn hảo, và bạn có thể không muốn đẩy kịch bản đó ra môi trường sản xuất của bạn, và nó không đầy đủ tính năng như Firebug, nhưng nó khá tốt khi bạn có nhiều thứ xung quanh với một trình duyệt cấp thấp như I E.

+3

nếu IE không phải là yêu cầu, thì sẽ không có vấn đề gì. Các công cụ dev chrome/firefox được xây dựng trong thực hiện điều này tốt. – Joe

0

Một chút chunky nhưng nó hoạt động cho các đối tượng DOM:

console.log(testNode.outerHTML.replace(testNode.innerHTML,"")); 
1

Thêm Tag này trong trang của bạn:

<script type="text/javascript" src="https://getfirebug.com/firebug-lite-debug.js"></script>

Và những điều sẽ làm việc.

Làm việc trên hệ thống của tôi.

Lưu ý: Hãy thử giải pháp này.

0

Dump nó thành một hiện HMTL Element

tôi nhận thấy IE 11 được tước dòng console sau 1027 ký tự: -/ Khi tôi đã có một đối tượng lớn để đổ (12.000 ký tự) Tôi đổ vào một phần tử TextArea-Element có sẵn, từ đó tôi có thể sao chép nội dung.

var str = JSON.stringify(myObject); 
$('#existing-element').text(str); // jQuery or 
document.querySelector("#existing-element").innerHTML = str; // native JavaScript 
1

Một phiên bản tranh ảnh của câu trả lời tuyệt vời của Xavi:

enter image description here