Согласно этому посту это было в бета-версии, но это не в релизе?
javascript
logging
internet-explorer-8
console
leeand00
источник
источник
console.log
находится там в IE8, ноconsole
объект не не создается , пока вы раскрываете Devtools. Поэтому обращение кconsole.log
может привести к ошибке, например, если это происходит при загрузке страницы до того, как вы сможете открыть инструменты разработки. Победы ответ здесь объясняет это более подробно.Ответы:
Еще лучше для отступления это:
источник
console.log доступен только после того, как вы открыли Инструменты разработчика (F12 для переключения его открытия и закрытия). Забавно, что после того, как вы открыли его, вы можете закрыть его, а затем отправлять в него сообщения с помощью вызовов console.log, и они будут видны при повторном открытии. Я думаю, что это своего рода ошибка, и может быть исправлена, но посмотрим.
Я, вероятно, просто буду использовать что-то вроде этого:
и даже проще:
источник
alert
это зло Некоторые коды ведут себя по-разному, когда используются оповещения, потому что документ теряет фокус, что затрудняет диагностику ошибок или создает ошибки там, где их раньше не было. Кроме того, если вы случайно оставите aconsole.log
в своем производственном коде, он будет доброкачественным (при условии, что он не взорвется) - просто тихо войдет в консоль. Если вы случайно оставитеalert
в своем производственном коде пользовательский опыт разрушен.Это мой взгляд на разные ответы. Я действительно хотел видеть зарегистрированные сообщения, даже если у меня не было открытой консоли IE, когда они были запущены, поэтому я помещаю их в
console.messages
созданный мной массив. Я также добавил функциюconsole.dump()
для облегчения просмотра всего журнала.console.clear()
очистит очередь сообщений.Это решение также «обрабатывает» другие методы консоли (которые, я считаю, все происходят из API консоли Firebug )
Наконец, это решение имеет форму IIFE , поэтому оно не загрязняет глобальный масштаб. Аргумент резервной функции определяется в нижней части кода.
Я просто помещаю его в свой основной файл JS, который есть на каждой странице, и забываю об этом.
Некоторая дополнительная информация
Линия
var args = Array.prototype.slice.call(arguments);
создает массив изarguments
объекта. Это необходимо, потому что аргументы на самом деле не являются массивом .trap()
является обработчиком по умолчанию для любой из функций API. Я передаю аргументы, чтобыmessage
вы получили журнал аргументов, которые были переданы любому вызову API (не толькоconsole.log
).редактировать
Я добавил дополнительный массив,
console.raw
который захватывает аргументы в точности так, как переданоtrap()
. Я понял, чтоargs.join(' ')
это преобразование объектов в строку,"[object Object]"
что иногда может быть нежелательным. Спасибо bfontaine за предложение .источник
trap
функции:var args = Array.prototype.slice.call(arguments); var message = args.join(' ');
? Почему вы передаете аргументы через это сообщение?Стоит отметить, что
console.log
в IE8 нет настоящей функции Javascript. Он не поддерживает методыapply
илиcall
.источник
console.log=Function.prototype.bind.call(console.log,console);
чтобы обойти это.bind
.Предполагая, что вам не нужен резерв для оповещения, вот еще более краткий способ обойти недостатки Internet Explorer:
источник
Мне очень нравится подход, опубликованный "orange80". Это элегантно, потому что вы можете установить его один раз и забыть.
Другие подходы требуют от вас делать что-то другое (
console.log()
каждый раз вызывать что-то отличное от простого ), что просто вызывает проблемы ... Я знаю, что в конце концов забуду.Я сделал еще один шаг, обернув код в служебную функцию, которую вы можете вызвать один раз в начале вашего javascript, где угодно, до того, как он будет записан. (Я устанавливаю это в свой продукт маршрутизатора данных о событиях в моей компании. Это поможет упростить кросс-браузерный дизайн его нового интерфейса администратора.)
источник
/**/console.log("...");
чтобы легко найти и найти временный код.Если вы получаете "undefined" для всех ваших вызовов console.log, это, вероятно, означает, что у вас все еще загружен старый firebuglite (firebug.js). Он переопределит все допустимые функции IE8 console.log, даже если они существуют. Это то, что случилось со мной в любом случае.
Проверьте наличие другого кода, переопределяющего объект консоли.
источник
Лучшее решение для любого браузера без консоли:
источник
Есть так много ответов. Мое решение для этого было:
Короче говоря, если console.log не существует (или в этом случае не открыт), сохраните журнал в глобальном массиве пространств имен. Таким образом, вам не надоедают миллионы предупреждений, и вы все равно можете просматривать свои журналы при открытой или закрытой консоли разработчика.
источник
источник
window.console.log()
может быть доступно в IE8, даже когдаconsole.log()
нет?typeof window.console.log === "object"
, что не"function"
Вот мой "IE, пожалуйста, не врезаться"
источник
Я нашел это на GitHub :
источник
Я использую подход Уолтера сверху (см .: https://stackoverflow.com/a/14246240/3076102 )
Я смешиваю в решение, которое я нашел здесь https://stackoverflow.com/a/7967670 чтобы правильно показывать объекты.
Это означает, что функция ловушки становится:
Я надеюсь, что это полезно :-)
источник
Это работает в IE8. Откройте Инструменты разработчика IE8, нажав F12.
источник
Мне нравится этот метод (с использованием jquery's doc ready) ... он позволяет вам использовать консоль даже в ie ... единственное преимущество в том, что вам нужно перезагрузить страницу, если вы открываете инструменты ie после загрузки страницы ...
это может быть проще, если учесть все функции, но я использую только журнал, так что это то, что я делаю.
источник
Вот версия, которая будет входить в консоль, когда инструменты разработчика открыты, а не когда они закрыты.
источник
apply
метода.Создайте свою собственную консоль в html .... ;-) Это может быть замечено, но вы можете начать с:
источник