Menurut post ini ini adalah dalam versi beta, tapi itu's tidak di rilis?
konsol.log ini hanya tersedia setelah anda telah membuka Alat Pengembang (F12 untuk beralih itu terbuka dan tertutup). Hal yang lucu adalah bahwa setelah anda've membukanya, anda dapat menutupnya, kemudian masih posting untuk itu melalui konsol.log panggilan, dan mereka akan melihat ketika anda membukanya kembali. I'm berpikir bahwa bug macam, dan mungkin tetap, tapi kita akan lihat.
I'll mungkin hanya menggunakan sesuatu seperti ini:
function trace(s) {
if ('console' in self && 'log' in console) console.log(s)
// the line below you might want to comment out, so it dies silent
// but nice for seeing when the console is available or not.
else alert(s)
}
dan bahkan lebih sederhana:
function trace(s) {
try { console.log(s) } catch (e) { alert(s) }
}
Bahkan lebih baik untuk mundur ini:
var alertFallback = true;
if (typeof konsol === "undefined" || jenis konsol.log === "undefined") {
konsol = {};
jika (alertFallback) {
konsol.log = function(msg) {
alert(msg);
};
} else {
konsol.log = function() {};
}
}
Ini saya ambil di berbagai jawaban. Saya ingin benar-benar melihat log pesan, bahkan jika saya tidak memiliki IE konsol terbuka ketika mereka dipecat, jadi saya mendorong mereka ke konsol.pesan
array yang saya buat. Saya juga menambahkan fungsi konsol.dump()
untuk memudahkan melihat seluruh log. konsol.jelas()
akan kosong antrian pesan.
Ini solusi juga "menangani" yang lain Konsol metode (yang saya percaya semua berasal dari Firebug Console API)
Akhirnya, solusi ini dalam bentuk HIDUP, sehingga tidak mencemari lingkup global. Mundur argumen fungsi didefinisikan di bawah kode.
Aku hanya drop in my master JS file yang disertakan pada setiap halaman, dan lupa tentang hal itu.
(function (fallback) {
fallback = fallback || function () { };
// function to trap most of the console functions from the FireBug Console API.
var trap = function () {
// create an Array from the arguments Object
var args = Array.prototype.slice.call(arguments);
// console.raw captures the raw args, without converting toString
console.raw.push(args);
var message = args.join(' ');
console.messages.push(message);
fallback(message);
};
// redefine console
if (typeof console === 'undefined') {
console = {
messages: [],
raw: [],
dump: function() { return console.messages.join('\n'); },
log: trap,
debug: trap,
info: trap,
warn: trap,
error: trap,
assert: trap,
clear: function() {
console.messages.length = 0;
console.raw.length = 0 ;
},
dir: trap,
dirxml: trap,
trace: trap,
group: trap,
groupCollapsed: trap,
groupEnd: trap,
time: trap,
timeEnd: trap,
timeStamp: trap,
profile: trap,
profileEnd: trap,
count: trap,
exception: trap,
table: trap
};
}
})(null); // to define a fallback function, replace null with the name of the function (ex: alert)
Garis var args = Array.prototipe.slice.panggilan(argumen);
menciptakan sebuah Array dari argumen
Objek. Hal ini diperlukan karena argumen ini tidak benar-benar Array.
perangkap()
adalah default handler untuk setiap fungsi API. Saya lulus argumen untuk pesan
sehingga anda mendapatkan log argumen yang disampaikan untuk setiap panggilan API (bukan hanya konsol.log
).
Saya menambahkan sebuah array tambahan konsol.baku
yang menangkap argumen persis seperti yang diteruskan ke perangkap()
. Saya menyadari bahwa args.bergabung(' ')
mengkonversi objek ke string "[object object]"
yang kadang-kadang mungkin tidak diinginkan. Terima kasih bfontaine untuk saran.
Dengan asumsi anda don't peduli tentang fallback untuk mengingatkan, berikut ini's bahkan lebih ringkas cara untuk solusi Internet Explorer's kekurangan:
var console=console||{"log":function(){}};
Aku benar-benar seperti pendekatan diposting oleh "orange80". It's elegan karena anda dapat mengatur sekali dan melupakannya.
Pendekatan lain mengharuskan anda untuk melakukan sesuatu yang berbeda (call sesuatu yang lain dari biasa konsol.log()
setiap saat), yang hanya meminta masalah... saya tahu bahwa saya'd akhirnya lupa.
I've diambil langkah lebih lanjut, dengan membungkus kode dalam fungsi utilitas yang anda dapat menghubungi sekali pada awal javascript anda, di mana saja selama itu's sebelum penebangan. (Saya'm memasang ini di perusahaan saya's acara router data produk. Ini akan membantu menyederhanakan desain cross-browser baru antarmuka admin.)
/**
* Call once at beginning to ensure your app can safely call console.log() and
* console.dir(), even on browsers that don't support it. You may not get useful
* logging on those browers, but at least you won't generate errors.
*
* @param alertFallback - if 'true', all logs become alerts, if necessary.
* (not usually suitable for production)
*/
function fixConsole(alertFallback)
{
if (typeof console === "undefined")
{
console = {}; // define it if it doesn't exist already
}
if (typeof console.log === "undefined")
{
if (alertFallback) { console.log = function(msg) { alert(msg); }; }
else { console.log = function() {}; }
}
if (typeof console.dir === "undefined")
{
if (alertFallback)
{
// THIS COULD BE IMPROVED… maybe list all the object properties?
console.dir = function(obj) { alert("DIR: "+obj); };
}
else { console.dir = function() {}; }
}
}
Jika anda mendapatkan "undefined" untuk semua konsol anda.log panggilan, itu mungkin berarti anda masih memiliki aplikasi lama firebuglite dimuat (firebug.js). Itu akan menimpa semua valid fungsi dari IE8's konsol.log meskipun mereka tidak ada. Ini adalah apa yang terjadi padaku pula.
Periksa lain kode utama konsol objek.
Solusi terbaik untuk setiap browser yang kekurangan konsol adalah:
// Avoid `console` errors in browsers that lack a console.
(function() {
var method;
var noop = function () {};
var methods = [
'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',
'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',
'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',
'timeStamp', 'trace', 'warn'
];
var length = methods.length;
var console = (window.console = window.console || {});
while (length--) {
method = methods[length];
// Only stub undefined methods.
if (!console[method]) {
console[method] = noop;
}
}
}());
Ada begitu banyak Jawaban. Solusi saya untuk ini adalah:
globalNamespace.globalArray = new Array();
if (typeof console === "undefined" || typeof console.log === "undefined") {
console = {};
console.log = function(message) {globalNamespace.globalArray.push(message)};
}
Singkatnya, jika konsol.log doesn't ada (atau dalam kasus ini, isn't dibuka) kemudian menyimpan log di global namespace Array. Dengan cara ini, anda're tidak direcoki dengan jutaan peringatan dan anda masih dapat melihat log anda dengan pengembang konsol dibuka atau ditutup.
Saya menemukan ini di github:
// usage: log('inside coolFunc', this, arguments);
// paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/
window.log = function f() {
log.history = log.history || [];
log.history.push(arguments);
if (this.console) {
var args = arguments,
newarr;
args.callee = args.callee.caller;
newarr = [].slice.call(args);
if (typeof console.log === 'object') log.apply.call(console.log, console, newarr);
else console.log.apply(console, newarr);
}
};
// make it safe to use console.log always
(function(a) {
function b() {}
for (var c = "assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,markTimeline,profile,profileEnd,time,timeEnd,trace,warn".split(","), d; !! (d = c.pop());) {
a[d] = a[d] || b;
}
})(function() {
try {
console.log();
return window.console;
} catch(a) {
return (window.console = {});
}
} ());
I'm menggunakan Walter's pendekatan dari atas (lihat di: https://stackoverflow.com/a/14246240/3076102)
Aku campur dalam solusi yang saya temukan di sini https://stackoverflow.com/a/7967670 untuk benar menunjukkan benda-Benda.
Ini berarti perangkap fungsi menjadi:
function trap(){
if(debugging){
// create an Array from the arguments Object
var args = Array.prototype.slice.call(arguments);
// console.raw captures the raw args, without converting toString
console.raw.push(args);
var index;
for (index = 0; index < args.length; ++index) {
//fix for objects
if(typeof args[index] === 'object'){
args[index] = JSON.stringify(args[index],null,'\t').replace(/\n/g,'<br>').replace(/\t/g,' ');
}
}
var message = args.join(' ');
console.messages.push(message);
// instead of a fallback function we use the next few lines to output logs
// at the bottom of the page with jQuery
if($){
if($('#_console_log').length == 0) $('body').append($('<div />').attr('id', '_console_log'));
$('#_console_log').append(message).append($('<br />'));
}
}
}
Saya harap ini bermanfaat:-)
Membuat anda sendiri konsol dalam html .... ;-) Hal ini dapat imprved tetapi anda dapat memulai dengan :
if (typeof console == "undefined" || typeof console.log === "undefined") {
var oDiv=document.createElement("div");
var attr = document.createAttribute('id'); attr.value = 'html-console';
oDiv.setAttributeNode(attr);
var style= document.createAttribute('style');
style.value = "overflow: auto; color: red; position: fixed; bottom:0; background-color: black; height: 200px; width: 100%; filter: alpha(opacity=80);";
oDiv.setAttributeNode(style);
var t = document.createElement("h3");
var tcontent = document.createTextNode('console');
t.appendChild(tcontent);
oDiv.appendChild(t);
document.body.appendChild(oDiv);
var htmlConsole = document.getElementById('html-console');
window.console = {
log: function(message) {
var p = document.createElement("p");
var content = document.createTextNode(message.toString());
p.appendChild(content);
htmlConsole.appendChild(p);
}
};
}
Saya suka metode ini (menggunakan jquery's doc siap)... ini memungkinkan anda menggunakan konsol bahkan di ie... satunya menangkap adalah bahwa anda perlu reload halaman jika anda membuka ie's dev tools setelah beban halaman...
ini bisa menjadi jas hujan dengan akuntansi untuk semua fungsi, tapi saya hanya menggunakan log jadi ini adalah apa yang saya lakukan.
//one last double check against stray console.logs
$(document).ready(function (){
try {
console.log('testing for console in itcutils');
} catch (e) {
window.console = new (function (){ this.log = function (val) {
//do nothing
}})();
}
});
Di sini adalah versi yang akan masuk ke konsol ketika pengembang alat-alat yang terbuka dan tidak ditutup.
(function(window) {
var console = {};
console.log = function() {
if (window.console && (typeof window.console.log === 'function' || typeof window.console.log === 'object')) {
window.console.log.apply(window, arguments);
}
}
// Rest of your application here
})(window)