Перенаправить ссылку в строке вывода консоли на функцию вызываемой оболочки - PullRequest
0 голосов
/ 11 января 2019

Я написал декоратор / оболочку для window.console, чтобы я, среди прочего, мог отключить паразитные console.log в своей производственной среде. То, что я испытываю, - то, что моя обертка теперь появляется как источник фактической команды регистрации. Это затрудняет отладку через консоль, поскольку нажатие на ссылку в крайнем правом углу консоли приводит только к моей собственной функции вывода.

Следующий код является упрощенной версией реального сценария, в котором я удалил некоторые функции, такие как включение / отключение и кэширование / очистка скрытых строк.

    //Save reference to original function
    var oConsole = window.console;

    //Create custom console output method
    var wConsole = function (method) {
        return function () {
            if (!window.console[method].enabled) {
                //Apply log command to original console method
                oConsole[method].apply(oConsole, Array.from(arguments)); //This is the row i get linked to
            }
        };
    };

    //Create a new console object for overriding original functions
    var overrides = {
        o: oConsole,
        log: wConsole("log"),
        debug: wConsole("debug"),
        info: wConsole("info"),
        warn: wConsole("warn"),
        error: wConsole("error")
    }

    //Using jQuery i create a new instance and extend my defined overrides onto the original version
    window.console = $.extend({}, window.console, overrides);

    console.log("test 123"); //This is the row i want to link to

Когда я нажимаю на ссылку справа ... enter image description here
... я получаю ссылку на этот ряд.
enter image description here

Есть ли способ сделать функцию "прозрачной" таким образом, чтобы ссылка ссылалась на вызываемого объекта моей функции-обертки?

Решение должно работать только в Google Chrome, поскольку я выполняю большую часть своей разработки там.

1 Ответ

0 голосов
/ 11 января 2019

В Chrome есть опция «черного» файла скриптов. Хотя это, по-видимому, в основном предназначено для игнорирования сценариев инфраструктуры при отладке (сценарии с черным ящиком будут пропущены при пошаговом выполнении кода), это также поможет в вашем случае, поскольку не будет отображаться в качестве источника для вывода на консоль.

  1. Открыть DevTools
  2. Перейти в настройки (F1 или через главное меню)
  3. Откройте вкладку Blackboxing
  4. Включить флажок
  5. Добавить шаблон, соответствующий файлу с переопределением вашей консоли
  6. Будь счастлив

Источник: https://developers.google.com/web/tools/chrome-devtools/javascript/guides/blackbox-chrome-extension-scripts

...