Как я могу использовать консольный журнал в Internet Explorer?


119

Есть ли консольный логгер для IE? Я пытаюсь записать в консоль кучу тестов / утверждений, но не могу сделать это в IE.


8
осторожно! console.log()работает только тогда, когда открыт инструмент IE dev (да, IE паршивый). см. stackoverflow.com/questions/7742781/…
Адриан Бе

1
использовать кроссбраузерную оболочку: github.com/MichaelZelensky/log.js
Михаил Зеленский

Ответы:


147

Вы можете получить доступ к консоли сценариев IE8, запустив «Инструменты разработчика» (F12). Щелкните вкладку «Сценарий», затем щелкните «Консоль» справа.

Из кода JavaScript вы можете делать любое из следующих действий:

<script type="text/javascript">
    console.log('some msg');
    console.info('information');
    console.warn('some warning');
    console.error('some error');
    console.assert(false, 'YOU FAIL');
</script>

Кроме того, вы можете очистить консоль, позвонив console.clear().

ПРИМЕЧАНИЕ. Похоже, вы должны сначала запустить Инструменты разработчика, а затем обновить страницу, чтобы это работало.


Это только для IE8 +, но это чертовски хорошая консоль. По сути, это реплика Firebug, в которой отсутствуют некоторые функции и добавлены некоторые другие. Найдите ее в MSDN.
ken

2
Ах, даже если он отстает от Firebug, в нем все еще достаточно того, что мне нужно. Спасибо!
Ground5hark

1
Ссылка на MSDN
Casebash

73
Обратите внимание, что в IE, в отличие от Firefox, если инструменты разработчика не активны, window.console не определено и вызов console.log()будет прерван. Всегда защищайте свои звонки с помощьюwindow.console && console.log('stuff');
Guss

1
Если кто-то все еще не может его найти, не делайте того, что я сделал, и пытайтесь ввести свой сценарий в верхней части окна: область ввода на самом деле является текстовой областью / полосой в нижней части окна консоли инструментов разработчика. ,
starmandeluxe

24

Начиная с версии 8, в Internet Explorer, как и в других браузерах, есть собственная консоль. Однако, если консоль не включена, consoleобъект не существует, и вызов console.logвызовет ошибку.

Другой вариант - использовать log4javascript (полное раскрытие: написано мной), у которого есть собственная консоль ведения журнала, которая работает во всех основных браузерах, включая IE> = 5, плюс оболочка для собственной консоли браузера, которая позволяет избежать проблемы с неопределенным console.


Ха .. Через пару месяцев написал нечто подобное. Хорошая работа!
tftd

@Tim Down есть обходной путь для этого stackoverflow.com/a/13817235/3057246
Винод

14

Чрезвычайно важно при использовании console.log () в производстве:

если вы в конечном итоге выпускаете console.log()команды в производство, вам нужно внести какое-то исправление для IE, потому что consoleоно определяется только в F12режиме отладки.

if (typeof console == "undefined") {
    this.console = { log: function (msg) { alert(msg); } };
}

[очевидно, удалите предупреждение (сообщение); заявление, как только вы убедитесь, что оно работает]

См. Также 'console' is undefined error for Internet Explorer для других решений и более подробной информации.



5

Простая прокладка для IE7 и ниже, сохраняющая нумерацию строк для других браузеров:

/* console shim*/
(function () {
    var f = function () {};
    if (!window.console) {
        window.console = {
            log:f, info:f, warn:f, debug:f, error:f
        };
    }
}());

3

В своей книге «Секреты Javascript Ninja» Джон Ресиг (создатель jQuery) предлагает действительно простой код, который будет обрабатывать кроссбраузерные проблемы console.log. Он объясняет, что хотел бы иметь сообщение журнала, которое работает со всеми браузерами, и вот как он его закодировал:

function log() {
  try {
    console.log.apply(console, arguments);
  } catch(e) {
  try {
    opera.postError.apply(opera, arguments);
  }
  catch(e) {
    alert(Array.prototype.join.call( arguments, " "));
  }
}

Это Джон Ресиг; вы написали «В отставку», LOL
rvighne

1
В }этом фрагменте отсутствует информация. :)
Ночью

2

Для IE8 или поддержки консоли, ограниченной console.log (без отладки, трассировки, ...), вы можете сделать следующее:

  • Если console OR console.log undefined: создайте фиктивные функции для функций консоли (трассировка, отладка, журнал, ...)

    window.console = { debug : function() {}, ...};

  • В противном случае, если console.log определен (IE8) И console.debug (любой другой) не определен: перенаправьте все функции ведения журнала в console.log, это позволяет сохранить эти журналы!

    window.console = { debug : window.console.log, ...};

Не уверен в поддержке assert в различных версиях IE, но любые предложения приветствуются.



0

Для более старой версии IE (до IE8) нелегко увидеть журнал консоли на панели инструментов IE Developer Toolbar, после нескольких часов исследований и опробования множества различных решений, наконец, следующая панель инструментов - отличный инструмент для меня:

Основным преимуществом этого является предоставление консоли для IE6 или IE7, поэтому вы можете видеть, в чем ошибка (в журнале консоли).

  • Примечание:
  • Это бесплатно
  • снимок экрана панели инструментов

введите описание изображения здесь


0

Я всегда делал что-то вроде этого:

var log = (function () {
  try {
    return console.log;
  }
  catch (e) {
    return function () {};
  }
}());

и с этого момента просто всегда используйте log (...), не слишком увлекайтесь использованием консоли. [warn | error | и так далее], просто сохраняйте простоту. Я обычно предпочитаю простое решение красивым внешним библиотекам, это обычно окупается.

простой способ избежать проблем с IE (с несуществующим console.log)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.