Accéder à window.console après écrasement

Est-il possible d'accéder en quelque sorte à console.log après l'écrasement?

window.console = { log: function (msg) { alert(msg); }, /* etc... */ }; 

Est-il possible de retrouver la fonctionnalité de console.log originale?

Vous pouvez sauvegarder la console avant de l'écraser.

 var oldConsole = window.console; window.console = { log:function(msg){alert(msg)} //...}; 

Ensuite, vous pouvez utiliser la variable oldConsole .

 oldConsole.log('test'); 

Si vous ne pouvez pas le sauvegarder, vous pouvez créer un iFrame, puis voler la console à partir de là (cela peut ne pas fonctionner dans tous les navigateurs):

 var i = document.createElement('iframe'); i.style.display = 'none'; document.body.appendChild(i); window.console = i.contentWindow.console; 

Demo: http://jsfiddle.net/jcG7E/2

Edit (2017-04-08): Ce conseil est obsolète, dans Firefox 52 et la console Chrome 57 n'est plus définie sur le prototype de la fenêtre et la suppression la supprimera vraiment.


Au moins avec l'objet de console défini par Firefox et Chrome, vous pouvez simplement supprimer la propriété écrasée pour restaurer l'original:

 window.console = {}; delete window.console; window.console.log("This works!"); 

Cela fonctionne comme si la propriété de la console était définie sur le prototype de l'objet de window – sauf que ce n'est pas le cas, les navigateurs font de la magie ici.

 var customLog = { oriLog: '', Log: function(){ // create string to display var displaystring = ''; for (var i = 0, len = arguments.length; i < len; i++) { displaystring += arguments[i]; if (i + 1 != len) displaystring += ', '; } alert(displaystring); customLog.oriLog(arguments); } } window.onload = function(){ if (console != null) { customLog.oriLog = console.log; console.log = customLog.Log; } } 

Ce n'est pas possible. Sauf si celui qui l'a écrasé a inclus un code pour le défaire.