Menurut posting ini, ini masih dalam versi beta, tetapi tidak dalam rilis?
javascript
logging
internet-explorer-8
console
Leandand00
sumber
sumber
console.log
adalah ada di IE8, namunconsole
objek tidak diciptakan sampai Anda DevTools terbuka. Oleh karena itu, panggilan keconsole.log
dapat mengakibatkan kesalahan, misalnya jika terjadi pada pemuatan halaman sebelum Anda memiliki kesempatan untuk membuka alat dev. The jawaban menang di sini menjelaskan hal itu secara lebih rinci.Jawaban:
Yang lebih baik untuk mundur adalah ini:
sumber
console.log hanya tersedia setelah Anda membuka Alat Pengembang (F12 untuk mengaktifkannya terbuka dan ditutup). Lucunya, setelah Anda membukanya, Anda dapat menutupnya, lalu tetap mempostingnya melalui panggilan console.log, dan itu akan terlihat saat Anda membukanya kembali. Saya berpikir itu semacam bug, dan mungkin diperbaiki, tetapi kita akan lihat nanti.
Saya mungkin akan menggunakan sesuatu seperti ini:
dan bahkan lebih sederhana:
sumber
alert
itu jahat. Beberapa kode berperilaku berbeda ketika peringatan digunakan karena dokumen kehilangan fokus, membuat bug lebih sulit untuk didiagnosis atau dibuat yang tidak ada sebelumnya. Juga, jika Anda secara tidak sengaja meninggalkanconsole.log
kode produksi Anda, itu jinak (dengan asumsi itu tidak meledak) - hanya diam log ke konsol. Jika Anda secara tidak sengaja meninggalkanalert
kode produksi Anda, pengalaman pengguna hancur.Inilah pendapat saya tentang berbagai jawaban. Saya ingin benar-benar melihat pesan yang dicatat, bahkan jika saya tidak memiliki konsol IE terbuka ketika mereka dipecat, jadi saya mendorong mereka ke dalam
console.messages
array yang saya buat. Saya juga menambahkan fungsiconsole.dump()
untuk memudahkan melihat seluruh log.console.clear()
akan mengosongkan antrian pesan.Solusi ini juga "menangani" metode Konsol lainnya (yang saya yakin semuanya berasal dari Firebug Console API )
Akhirnya, solusi ini dalam bentuk IIFE , sehingga tidak mencemari ruang lingkup global. Argumen fungsi mundur didefinisikan di bagian bawah kode.
Saya hanya menjatuhkannya di file master JS saya yang disertakan pada setiap halaman, dan lupakan saja.
Beberapa info tambahan
Garis
var args = Array.prototype.slice.call(arguments);
menciptakan Array dariarguments
Objek. Ini diperlukan karena argumen sebenarnya bukan Array .trap()
adalah penangan default untuk salah satu fungsi API. Saya meneruskan argumen kemessage
sehingga Anda mendapatkan log argumen yang diteruskan ke panggilan API apa pun (bukan hanyaconsole.log
).Edit
Saya menambahkan array tambahan
console.raw
yang menangkap argumen persis seperti yang diteruskantrap()
. Saya menyadari bahwaargs.join(' ')
itu mengubah objek menjadi string"[object Object]"
yang terkadang tidak diinginkan. Terima kasih bfontaine untuk sarannya .sumber
trap
fungsi inivar args = Array.prototype.slice.call(arguments); var message = args.join(' ');
:? Mengapa Anda menyampaikan argumen melalui ini ke pesan?Perlu dicatat bahwa
console.log
di IE8 bukan fungsi Javascript yang sebenarnya. Itu tidak mendukungapply
ataucall
metode.sumber
console.log=Function.prototype.bind.call(console.log,console);
untuk menyiasati ini.bind
.Dengan asumsi Anda tidak peduli dengan peringatan untuk mengingatkan, berikut adalah cara yang lebih ringkas untuk mengatasi kekurangan Internet Explorer:
sumber
Saya sangat suka pendekatan yang diposting oleh "orange80". Elegan karena Anda dapat mengaturnya sekali dan melupakannya.
Pendekatan lain mengharuskan Anda untuk melakukan sesuatu yang berbeda (memanggil sesuatu selain polos
console.log()
setiap kali), yang hanya meminta masalah ... Saya tahu bahwa saya akhirnya akan lupa.Saya telah mengambilnya selangkah lebih maju, dengan membungkus kode dalam fungsi utilitas yang dapat Anda panggil sekali di awal javascript Anda, di mana saja selama itu sebelum logging. (Saya memasang ini di produk router data acara perusahaan saya. Ini akan membantu menyederhanakan desain lintas-browser dari antarmuka admin yang baru.)
sumber
/**/console.log("...");
sehingga mudah untuk mencari dan menemukan kode sementara.Jika Anda mendapatkan "undefined" untuk semua panggilan console.log Anda, itu mungkin berarti Anda masih memuat firebuglite lama (firebug.js). Ini akan mengesampingkan semua fungsi valid dari console.log IE8 meskipun mereka ada. Inilah yang terjadi pada saya.
Periksa kode lain yang menimpa objek konsol.
sumber
Solusi terbaik untuk browser apa pun yang tidak memiliki konsol adalah:
sumber
Ada banyak Jawaban. Solusi saya untuk ini adalah:
Singkatnya, jika console.log tidak ada (atau dalam hal ini, tidak dibuka) maka simpan log dalam array namespace global. Dengan cara ini, Anda tidak direcoki dengan jutaan peringatan dan Anda masih dapat melihat log Anda dengan konsol pengembang dibuka atau ditutup.
sumber
sumber
window.console.log()
mungkin tersedia di IE8 bahkan ketikaconsole.log()
tidak?typeof window.console.log === "object"
, tidak"function"
Inilah "IE saya, tolong jangan crash"
sumber
Saya menemukan ini di github :
sumber
Saya menggunakan pendekatan Walter dari atas (lihat: https://stackoverflow.com/a/14246240/3076102 )
Saya mencampur dalam solusi yang saya temukan di sini https://stackoverflow.com/a/7967670 untuk menampilkan Objek dengan benar.
Ini berarti fungsi perangkap menjadi:
Saya harap ini membantu :-)
sumber
Ia bekerja di IE8. Buka Alat Pengembang IE8 dengan menekan F12.
sumber
Saya suka metode ini (menggunakan jquery's doc ready) ... memungkinkan Anda menggunakan konsol bahkan dalam contoh ... hanya menangkap bahwa Anda perlu memuat ulang halaman jika Anda membuka alat dev yaitu setelah halaman dimuat ...
bisa jadi lebih licin dengan memperhitungkan semua fungsi, tapi saya hanya menggunakan log jadi ini yang saya lakukan.
sumber
Berikut adalah versi yang akan masuk ke konsol ketika alat pengembang terbuka dan tidak ketika mereka ditutup.
sumber
apply
metode.Buat konsol Anda sendiri di html .... ;-) Ini bisa ditingkatkan tetapi Anda bisa mulai dengan:
sumber