61 votes

Restauration de console.log()

Pour une raison quelconque, le prototype de framework (ou un autre code JavaScript) fourni avec Magento remplace les fonctions de console standard, je ne peux donc rien déboguer. En écrivant dans la console JavaScript console j'obtiens le résultat suivant :

 > console
Object
assert: function () {}
count: function () {}
debug: function () {}
dir: function () {}
dirxml: function () {}
error: function () {}
group: function () {}
groupEnd: function () {}
info: function () {}
log: function () {}
profile: function () {}
profileEnd: function () {}
time: function () {}
timeEnd: function () {}
trace: function () {}
warn: function () {}

J'utilise Google Chrome version 13.0.782.112 sur Linux.

Prototype JavaScript framework, version 1.6.0.3

Existe-t-il un moyen rapide de résoudre cela?

95voto

Xaerxess Points 10324

Puisque la console d'origine est dans l'objet window.console, essayez de restaurer window.console partir de iframe :

 var i = document.createElement('iframe');
i.style.display = 'none';
document.body.appendChild(i);
window.console = i.contentWindow.console;
// with Chrome 60+ don't remove the child node
// i.parentNode.removeChild(i);

Fonctionne pour moi sur Chrome 14.

49voto

pimvdb Points 66332

Par exemple,

 delete console.log

restaurerait également console.log :

 console.log = null;
console.log;         // null

delete console.log;
console.log;         // function log() { [native code] }

12voto

Francis Kim Points 2562

Magento a le code suivant en /js/varien/js.js - commentez-le et cela fonctionnera.

 if (!("console" in window) || !("firebug" in console))
{
    var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml",
    "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];

    window.console = {};
    for (var i = 0; i < names.length; ++i)
        window.console[names[i]] = function() {}
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X