Как в Magento записать сообщение JavaScript в журнал посредством console.log?

[16 июля 2019 г.]    Российская сборка Magento 2.52.2
Magento 2: модули и услуги
magereport.com: составление перечня необходимых для установки заплаток SUPEE
#1 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

05.11.2011 19:22

Как известно, для записи сообщения JavaScript в журнал браузера предназначен метод console.log.

Однако в Magento без дополнительных настроек этот метод не будет работать в силу дефекта в программном коже JavaScript Magento.

Дефект проявляется только на быстром компьютере в браузерах с быстрой обработкой JavaScript (я заметил — в браузерах на основе Webkit (Chrome / Safari) и в Firefox 9, в то время как в более ранних версиях Firefox дефект не проявлялся).

Magento проверяет существование объекта console, не принимая во внимание, успел ли браузер создать этот объект.
И, если браузер выполняет кллиентский программный код Magento быстрее, чем создаёт объект console, то кллиентский программный код Magento считает, что браузер не поддерживает щбъект console, и замещает его объектом-пустышкой.

Чтобы восстановить работоспособность метода записи сообщения JavaScript в журнал браузера, надо в файле js/varien/js.js найти и удалить следующий блок (примерно 630 строка).

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() {}
}



Либо можно отключить этот блок для конкретных браузеров.
Например, для браузеров на основе Webkit:

if (!/webkit/.test(navigator.userAgent.toLowerCase() )) {

    //...

}   


Поделиться темой: