Dalam keadaan apa window.console.log
didefinisikan di Internet Explorer 9?
Bahkan ketika window.console.log
didefinisikan, window.console.log.apply
dan window.console.log.call
tidak ditentukan. Kenapa ini?
[Pertanyaan terkait untuk IE8: Apa yang terjadi dengan console.log di IE8? .]
javascript
logging
internet-explorer-9
mloughran
sumber
sumber
Jawaban:
Di Internet Explorer 9 (dan 8),
console
objek hanya terbuka ketika alat pengembang dibuka untuk tab tertentu. Jika Anda menyembunyikan jendela alat pengembang untuk tab itu,console
objek tetap terbuka untuk setiap halaman yang Anda navigasi. Jika Anda membuka tab baru, Anda juga harus membuka alat pengembang untuk tab itu agarconsole
objek dapat diekspos.The
console
objek bukan bagian dari standar apapun dan perluasan ke Document Object Model. Seperti objek DOM lainnya, itu dianggap sebagai objek host dan tidak diharuskan untuk mewarisi dariObject
, maupun metodenyaFunction
, seperti fungsi dan objek asli ECMAScript. Inilah alasannyaapply
dancall
tidak ditentukan pada metode-metode itu. Di IE 9, sebagian besar objek DOM ditingkatkan untuk mewarisi dari tipe script ECMAS asli. Karena alat pengembang dianggap sebagai ekstensi untuk IE (meskipun, ekstensi bawaan), mereka jelas tidak menerima perbaikan yang sama dengan DOM lainnya.Untuk apa nilainya, Anda masih dapat menggunakan beberapa
Function.prototype
metode padaconsole
metode dengan sedikitbind()
sihir:sumber
console
.Solusi sederhana untuk masalah console.log ini adalah dengan menentukan yang berikut di awal kode JS Anda:
Ini berfungsi untuk saya di semua browser. Ini menciptakan fungsi dummy untuk console.log ketika debugger tidak aktif. Ketika debugger aktif, metode console.log didefinisikan dan dijalankan secara normal.
sumber
Saya tahu ini adalah pertanyaan yang sangat lama tetapi merasa ini menambah alternatif yang berharga tentang bagaimana menangani masalah konsol. Tempatkan kode berikut sebelum panggilan ke konsol. * (Jadi skrip pertama Anda).
Referensi:
https://github.com/h5bp/html5-boilerplate/blob/v5.0.0/dist/js/plugins.js
sumber
console.log hanya ditentukan saat konsol terbuka. Jika Anda ingin memeriksanya dalam kode Anda, pastikan Anda memeriksanya di properti jendela
ini melempar pengecualian di IE9 dan tidak akan berfungsi dengan benar. Jangan lakukan ini
sumber
Setelah membaca artikel dari komentar Marc Cliament di atas, saya sekarang telah mengubah semua fungsi cross-browser console.log serbaguna untuk terlihat seperti ini:
sumber
Function.prototype.apply.call(console.log, console, arguments);
Saya ingin menyebutkan bahwa IE9 tidak meningkatkan kesalahan jika Anda menggunakan console.log dengan alat pengembang ditutup pada semua versi Windows. Di XP itu ada, tapi di Windows 7 tidak. Jadi jika Anda menjatuhkan dukungan untuk WinXP secara umum, Anda baik-baik saja menggunakan console.log secara langsung.
sumber
Bagaimana tentang...
sumber