Как скрыть сообщения в консоли, исходящие из iframes

Я использую console.log(...) для целей отладки. Однако консоль также получает сообщения из iframes (я использую iframes в своем HTML-коде). Как я могу увидеть только журналы, которые я отправил, а не журналы, которые поступают из iframe?

Ответы

Ответ 1

Я написал службу логгера для клиентской стороны. Я использовал шаблон, с помощью которого я могу отфильтровать журналы/ошибки и т.д., Которые создаются моим sscript, а не iframes.

function logger(){
    var pattern="PC:";
    var info=function(){
        Array.prototype.unshift.apply(arguments, [pattern]);
        console.info.apply(console, arguments);
    }
        var log=function(){
        Array.prototype.unshift.apply(arguments, [pattern]);
        console.log.apply(console, arguments);
    }
    var warning=function(){
        Array.prototype.unshift.apply(arguments, [pattern]);
        console.warn.apply(console, arguments);
    }
    var debug=function(){
        Array.prototype.unshift.apply(arguments, [pattern]);
        console.debug.apply(console, arguments);
    }
    var error=function(){
        Array.prototype.unshift.apply(arguments, [pattern]);
        console.error.apply(console, arguments);
    }
    return {
        info:info,
        log:log,
        warning:warning,
        debug:debug,
        error:error
    }
}

Здесь "ПК:" - это шаблон

Ответ 2

Как добавить фрагмент кода в JavaScript для обнаружения ошибок, создаваемых iFrames?

Вы можете заменить [IFRAME ERROR MESSAGE] на ошибки, которые бросает iFrame. Если этот фрагмент обнаруживает ошибку из iFrame, он ничего не сделает, иначе он выведет ошибку на консоль:

window.onerror = function (msg, url, line) {
    if (msg == "[IFRAME ERROR MESSAGE]") {
        return true
    }
    else {
        //do nothing
    }
}

Обязательно поместите этот код как можно раньше в script.

Ссылка

Ссылка 2

Рабочий пример (сохраните его как test.html и откройте в chrome):

<button onclick="myfunction()">x is not defined</button>
<button onclick="myfunction2()">y is not defined</button>

<script>
window.onerror = function (msg, url, line) {
    if (msg == "Uncaught ReferenceError: x is not defined") {
        return true
    }
    else {
        //do nothing
    }
}
function myfunction(){
    console.log(x);
}
function myfunction2(){
    console.log(y);
}

</script>

В этом примере вы увидите, что ошибки не будут выводиться на консоль при нажатии первой кнопки, но при нажатии второй кнопки вы увидите ошибки.

Ответ 3

Вы можете добавить что-то вроде "? nofrm = 1" к атрибуту src тегов script, на которые вы хотите видеть журналы. Затем в Chrome вы можете ввести "nofrm" в фильтр, чтобы получать журналы только из них. Добавьте "? Nofrm = 1" к URL-адресу, если вы хотите также встраивать скрипты.

Ответ 4

Это своего рода старый пост, но все же для тех, кто придет сюда за помощью:

В Chrome вы можете выбрать опцию "Только выбранный контекст" (скриншот здесь), и это будет так.

Ответ 5

Вы можете фильтровать журналы по источнику/скрыть из других сценариев, чем вы сами. Это, конечно, будет только решением, если вы получите журналы из меньшего количества скриптов

Фильтровать по источникам

Ответ 6

Просто отфильтруйте (используя поле фильтра Chrome) сообщения журнала от iFrame.

На вкладке "Консоль Chrome" у вас есть поле "Фильтр", введите имя файла, который вы хотите отфильтровать, со знаком минус "-" перед именем файла. Вы можете фильтровать несколько файлов, используя пробел в качестве разделителя.

Например:

-LogUtil.js -FrameService.js


enter image description here

Или вместо того, чтобы печатать, просто щелкните правой кнопкой мыши сообщение журнала и выберите Hide message from <file_name>.