console.log() определен, но не входит в IE - пустая консоль

Javascript на странице в Internet Explorer (8 и 9) с открытыми инструментами разработчика console.log(), который определен - но ничего не появляется в реальном журнале.

Вещи пытались:

  • Двойная проверка с alert()с этим console определяется и что console.log это функция.
  • Проверка с alert()до и после этого код console.log() линия,
  • Проверка кода на любые запасные варианты IE, такие как if(ie){console={log:function(){}}}удаление ссылок на библиотеки и проверка фрагментов кода на предмет упоминаний console
  • Проверка настроек IE и включение всего, что связано с отладкой
  • Проверка того, что IE не сломан, загрузив стороннюю страницу с console.log()s (например, http://jsbin.com/ регистрирует "init" и "runner")
  • Перестановка console за window.console

Таким образом, консоль есть и активна, но на самой консоли (на вкладке "Сценарий" или "Консоль") не отображаются сообщения консоли.

Что еще могло остановить console.log() от регистрации чего-либо, даже когда инструменты разработчика открыты и console.log это определенная функция?

1 ответ

Решение

Виновником в этом деле оказался, во всяком случае, лайт-клоп-лайт.

Мои тестовые страницы разработчиков часто включают это, чтобы (по иронии судьбы) помочь определенным типам отладки в IE:

<!--[if IE]>
<script type="text/javascript" src="https://getfirebug.com/firebug-lite.js"></script>
<![endif]-->

Так как он появляется в текстовых редакторах как комментарий, его легко пропустить.

Alerting alert(console.log); до и после показывает, что firebug lite изменяет функцию console.log с собственного кода на этот:

function(){return f.apply(c,arguments)}

... который по какой-то причине (в данный момент здесь) ничего не делает.

Без участия Firebug Lite, alert(console.log); в IE дает это:

function log() {
[native code]
}

... и выполняет свою обычную процедуру регистрации, если f12 Dev Tools открыт, и вылетает, если это не так.

Другие вопросы по тегам