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 открыт, и вылетает, если это не так.