Перенаправить ссылку в строке вывода консоли на функцию вызываемой оболочки

1

Я написал декоратор/оболочку для 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

Когда я нажимаю на ссылку справа... Изображение 174551
... я связан с этим рядом.
Изображение 174551

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

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

Теги:
console.log
google-chrome-devtools

1 ответ

2
Лучший ответ

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

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

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

  • 0
    Это звучит как то, что я искал. Просто нужно сделать некоторые приготовления, чтобы проверить это. Нужно извлечь некоторые функции в отдельный файл.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню