Làm cách nào để sử dụng tính năng ghi bảng điều khiển trong Internet Explorer?


119

Có trình ghi bảng điều khiển cho IE không? Tôi đang cố gắng đăng nhập một loạt các thử nghiệm / xác nhận vào bảng điều khiển nhưng tôi không thể thực hiện việc này trong IE.


8
coi chừng! console.log()chỉ hoạt động khi công cụ dành cho nhà phát triển của IE đang mở (có IE là crappy). xem stackoverflow.com/questions/7742781/…
Adrien Be

1
sử dụng trình bao bọc trên nhiều trình duyệt: github.com/MichaelZelensky/log.js
Michael Zelensky

Câu trả lời:


147

Bạn có thể truy cập bảng điều khiển tập lệnh IE8 bằng cách khởi chạy "Công cụ dành cho nhà phát triển" (F12). Nhấp vào tab "Tập lệnh", sau đó nhấp vào "Bảng điều khiển" ở bên phải.

Từ trong mã JavaScript của mình, bạn có thể thực hiện bất kỳ thao tác nào sau đây:

<script type="text/javascript">
    console.log('some msg');
    console.info('information');
    console.warn('some warning');
    console.error('some error');
    console.assert(false, 'YOU FAIL');
</script>

Ngoài ra, bạn có thể xóa Bảng điều khiển bằng cách gọi console.clear().

LƯU Ý: Có vẻ như trước tiên bạn phải khởi chạy Công cụ dành cho nhà phát triển, sau đó làm mới trang của bạn để công cụ này hoạt động.


Điều này chỉ dành cho IE8 +, nhưng nó là một giao diện điều khiển tuyệt vời. Về cơ bản, nó là một bản sao của Firebug, thiếu một vài tính năng với một số tính năng khác được bổ sung. Hãy tìm kiếm MSDN cho nó.
ken

2
À, mặc dù nó thiếu Firebug, nó vẫn có đủ những gì tôi cần. Cảm ơn!
ground5hark

1
Liên kết đến MSDN
Casebash

73
Xin lưu ý rằng trong IE, không giống như trong Firefox, nếu các công cụ dành cho nhà phát triển không hoạt động, window.console không được xác định và việc gọi console.log()sẽ bị hỏng. Luôn luôn bảo vệ các cuộc gọi của bạn vớiwindow.console && console.log('stuff');
GUSS

1
Trong trường hợp bất kỳ ai vẫn không thể tìm thấy nó, đừng làm những gì tôi đã làm và cố gắng nhập tập lệnh của bạn vào phần trên cùng của cửa sổ: vùng nhập thực sự là một vùng / thanh văn bản ở cuối cửa sổ Developer Tools Console .
starmandeluxe

24

Kể từ phiên bản 8, Internet Explorer có bảng điều khiển riêng, giống như các trình duyệt khác. Tuy nhiên, nếu bảng điều khiển không được kích hoạt, consoleđối tượng sẽ không tồn tại và một lệnh gọi tới console.logsẽ gây ra lỗi.

Một tùy chọn khác là sử dụng log4javascript (tiết lộ đầy đủ: do tôi viết), có bảng điều khiển ghi nhật ký riêng hoạt động trên tất cả các trình duyệt chính, bao gồm IE> = 5, cộng với trình bao bọc cho bảng điều khiển của trình duyệt để tránh sự cố không xác định console.


Hah .. Một vài tháng tôi đã viết một cái gì đó tương tự. Làm tốt lắm!
tftd

@Tim Xuống có một giải pháp cho nó stackoverflow.com/a/13817235/3057246
Vinod Srivastav

14

Cực kỳ quan trọng nếu sử dụng console.log () trong sản xuất:

nếu bạn kết thúc việc phát hành console.log()các lệnh để sản xuất, bạn cần phải đặt một số loại sửa chữa cho IE - bởi vì consolechỉ được xác định khi ở F12chế độ gỡ lỗi.

if (typeof console == "undefined") {
    this.console = { log: function (msg) { alert(msg); } };
}

[rõ ràng là loại bỏ cảnh báo (msg); tuyên bố sau khi bạn đã xác minh nó hoạt động]

Xem thêm 'bảng điều khiển' là lỗi không xác định cho Internet Explorer để biết các giải pháp khác và biết thêm chi tiết



5

Các miếng đệm IE7 trở xuống đơn giản giúp duy trì Đánh số dòng cho các trình duyệt khác:

/* console shim*/
(function () {
    var f = function () {};
    if (!window.console) {
        window.console = {
            log:f, info:f, warn:f, debug:f, error:f
        };
    }
}());

3

Trong cuốn sách của mình, "Bí mật của Javascript Ninja", John Resig (người tạo ra jQuery) có một đoạn mã thực sự đơn giản sẽ xử lý các vấn đề console.log trên nhiều trình duyệt. Anh ấy giải thích rằng anh ấy muốn có một thông báo nhật ký hoạt động với tất cả các trình duyệt và đây là cách anh ấy mã hóa nó:

function log() {
  try {
    console.log.apply(console, arguments);
  } catch(e) {
  try {
    opera.postError.apply(opera, arguments);
  }
  catch(e) {
    alert(Array.prototype.join.call( arguments, " "));
  }
}

Đó là John Resig; bạn đã viết "Từ chức", LOL
rvighne

1
Có một }thiếu sót trong đoạn mã đó. :)
Nighto

2

Đối với hỗ trợ IE8 hoặc giao diện điều khiển giới hạn ở console.log (không gỡ lỗi, theo dõi, ...), bạn có thể thực hiện như sau:

  • Nếu console HOẶC console.log undefined: Tạo các hàm giả cho các hàm console (theo dõi, gỡ lỗi, nhật ký, ...)

    window.console = { debug : function() {}, ...};

  • Khác nếu console.log được định nghĩa (IE8) VÀ console.debug (bất kỳ cái nào khác) không được xác định: chuyển hướng tất cả các chức năng ghi nhật ký đến console.log, điều này cho phép giữ các nhật ký đó!

    window.console = { debug : window.console.log, ...};

Không chắc chắn về sự hỗ trợ khẳng định trong các phiên bản IE khác nhau, nhưng mọi đề xuất đều được hoan nghênh.



0

Đối với phiên bản IE cũ hơn (trước IE8), việc xem nhật ký giao diện điều khiển trong Thanh công cụ dành cho nhà phát triển IE không phải là điều dễ hiểu, sau khi dành hàng giờ nghiên cứu và thử nhiều giải pháp khác nhau, cuối cùng, thanh công cụ sau là công cụ tuyệt vời đối với tôi:

Ưu điểm chính của việc này là cung cấp bảng điều khiển cho IE6 hoặc IE7, vì vậy bạn có thể xem lỗi là gì (trong nhật ký bảng điều khiển)

  • Ghi chú:
  • Nó là miễn phí
  • ảnh chụp màn hình của thanh công cụ

nhập mô tả hình ảnh ở đây


0

Tôi đã luôn làm điều gì đó như thế này:

var log = (function () {
  try {
    return console.log;
  }
  catch (e) {
    return function () {};
  }
}());

và từ đó chỉ cần luôn sử dụng log (...), đừng quá ưa thích sử dụng console. [warning | error |, v.v.], hãy đơn giản hóa nó. Tôi thường thích giải pháp đơn giản hơn là các thư viện bên ngoài ưa thích, nó thường mang lại hiệu quả.

cách đơn giản để tránh sự cố với IE (với console.log không tồn tại)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.