Bagaimana cara menggunakan pengelogan konsol di Internet Explorer?

119

Apakah ada logger konsol untuk IE? Saya mencoba untuk mencatat banyak tes / pernyataan ke konsol tetapi saya tidak dapat melakukan ini di IE.

ground5hark
sumber
8
Awas! console.log()hanya bekerja ketika alat pengembang IE terbuka (ya IE jelek). lihat stackoverflow.com/questions/7742781/…
Adrien Be
1
gunakan pembungkus lintas-browser: github.com/MichaelZelensky/log.js
Michael Zelensky

Jawaban:

147

Anda dapat mengakses konsol skrip IE8 dengan meluncurkan "Alat Pengembang" (F12). Klik tab "Script", lalu klik "Console" di sebelah kanan.

Dari dalam kode JavaScript Anda, Anda dapat melakukan salah satu dari berikut ini:

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

Selain itu, Anda dapat menghapus Konsol dengan menelepon console.clear().

CATATAN: Tampaknya Anda harus meluncurkan Alat Pengembang terlebih dahulu kemudian menyegarkan halaman Anda agar ini berfungsi.

Craig
sumber
Ini hanya untuk IE8 +, tetapi ini adalah konsol yang sangat bagus. Ini pada dasarnya adalah replika Firebug, kehilangan beberapa fitur dengan beberapa fitur lain dimasukkan. Cari MSDN untuk itu.
ken
2
Ah, meskipun itu kurang dari Firebug, itu masih cukup dari apa yang saya butuhkan. Terima kasih!
ground5hark
1
Tautan ke MSDN
Casebash
73
Harap dicatat bahwa di IE, tidak seperti di Firefox, jika alat pengembang tidak aktif, window.console tidak ditentukan dan panggilan console.log()akan rusak. Selalu lindungi panggilan Anda denganwindow.console && console.log('stuff');
Guss
1
Jika ada yang masih tidak dapat menemukannya, jangan lakukan apa yang saya lakukan dan coba ketik skrip Anda di bagian atas jendela: area masukan sebenarnya adalah area / bilah teks di bagian bawah jendela Konsol Alat Pengembang .
starmandeluxe
24

Sejak versi 8, Internet Explorer memiliki konsolnya sendiri, seperti browser lainnya. Namun, jika konsol tidak diaktifkan, consoleobjek tersebut tidak ada dan panggilan ke console.logakan memunculkan kesalahan.

Pilihan lainnya adalah menggunakan log4javascript (pengungkapan penuh: ditulis oleh saya), yang memiliki konsol logging sendiri yang berfungsi di semua browser utama, termasuk IE> = 5, ditambah pembungkus untuk konsol browser itu sendiri yang menghindari masalah yang tidak ditentukan console.

Tim Down
sumber
Hah .. Beberapa bulan saya menulis sesuatu yang serupa. Kerja bagus itu!
tftd
@Tim Down ada solusi untuk itu stackoverflow.com/a/13817235/3057246
Vinod Srivastav
14

Sangat penting jika menggunakan console.log () dalam produksi:

jika Anda akhirnya melepaskan console.log()perintah ke produksi, Anda perlu melakukan semacam perbaikan untuk IE - karena consolehanya ditentukan saat dalam F12mode debugging.

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

[jelas menghapus peringatan (msg); pernyataan setelah Anda memverifikasinya]

Lihat juga 'konsol' adalah kesalahan tidak ditentukan untuk Internet Explorer untuk solusi lain dan detail lebih lanjut

Simon_Weaver
sumber
9

Ada Firebug Lite yang memberikan banyak fungsi Firebug di IE.

Daniel DiPaolo
sumber
5

IE7 sederhana dan di bawah shim yang mempertahankan Line Numbering untuk browser lain:

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

Dalam bukunya, "Secrets of Javascript Ninja", John Resig (pembuat jQuery) memiliki kode yang sangat sederhana yang akan menangani masalah konsol.log lintas-browser. Dia menjelaskan bahwa dia ingin memiliki pesan log yang berfungsi dengan semua browser dan inilah cara dia mengkodekannya:

function log() {
  try {
    console.log.apply(console, arguments);
  } catch(e) {
  try {
    opera.postError.apply(opera, arguments);
  }
  catch(e) {
    alert(Array.prototype.join.call( arguments, " "));
  }
}
ambodi
sumber
Ini John Resig; Anda menulis "Mundur", LOL
rvighne
1
Ada yang }hilang di potongan itu. :)
Nighto
2

Untuk IE8 atau dukungan konsol yang terbatas pada console.log (tanpa debug, jejak, ...) Anda dapat melakukan hal berikut:

  • Jika konsol ATAU console.log tidak ditentukan: Buat fungsi tiruan untuk fungsi konsol (jejak, debug, log, ...)

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

  • Lain jika console.log didefinisikan (IE8) DAN console.debug (lainnya) tidak ditentukan: alihkan semua fungsi logging ke console.log, ini memungkinkan untuk menyimpan log tersebut!

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

Tidak yakin tentang dukungan assert di berbagai versi IE, tetapi saran apa pun diterima.

Christophe Roussy
sumber
0

Untuk versi IE yang lebih lama (sebelum IE8), tidak mudah untuk melihat log konsol di Bilah Alat Pengembang IE, setelah menghabiskan berjam-jam meneliti dan mencoba berbagai solusi, akhirnya, bilah alat berikut adalah alat yang hebat untuk saya:

Keuntungan utama dari ini adalah menyediakan konsol untuk IE6 atau IE7, sehingga Anda dapat melihat apa saja kesalahannya (di log konsol)

  • catatan:
  • Ini gratis
  • screen shot dari toolbar

masukkan deskripsi gambar di sini

super1ha1
sumber
0

Saya selalu melakukan sesuatu seperti ini:

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

dan dari situ selalu gunakan log (...), jangan terlalu asyik menggunakan console. [warn | error | dan sebagainya], sederhanakan. Saya biasanya lebih suka solusi sederhana daripada perpustakaan eksternal yang mewah, biasanya itu terbayar.

cara sederhana untuk menghindari masalah dengan IE (dengan console.log yang tidak ada)

stopopa
sumber