Як можна використовувати консольний журнал в Internet Explorer?


119

Чи є консольний реєстратор для IE? Я намагаюся записати на консоль купу тестів / тверджень, але я не можу цього зробити в IE.


8
Стережись! console.log()працює лише тоді, коли відкритий інструмент розробки IE (так IE є хитрим). дивіться stackoverflow.com/questions/7742781/…
Adrien Be

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 для цього.
кен

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); } };
}

[очевидно видалити попередження (мсг); заява, як тільки ви перевірите, чи працює]

Дивіться також "консоль" - невизначена помилка 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
У }цьому фрагменті немає. :)
Nighto

2

Для підтримки IE8 або консолі, обмеженої console.log (без налагодження, трасування, ...), ви можете зробити наступне:

  • Якщо консоль АБО console.log undefined: Створіть фіктивні функції для функцій консолі (слід, налагодження, журнал, ...)

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

  • В іншому випадку, якщо визначено console.log (IE8) І console.debug (будь-який інший) не визначено: перенаправити всі функції реєстрації на console.log, це дозволяє зберігати ці журнали!

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

Не впевнений у підтримці затвердження у різних версіях IE, але будь-які пропозиції вітаються.



0

Для старшої версії IE (до IE8) не просто бачити консольний запис у панелі інструментів розробника IE, витративши години на дослідження та спробу багатьох різних рішень, нарешті, наступна панель інструментів для мене чудовий інструмент:

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

  • Примітка:
  • Це безкоштовно
  • знімок екрана панелі інструментів

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


0

Я завжди робив щось подібне:

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

і з цього моменту просто завжди використовуйте журнал (...), не будьте занадто фантазійним за допомогою консолі. [застереження | помилка | тощо], просто тримайте це просто. Я, як правило, віддаю перевагу простому рішенню, тоді модні зовнішні бібліотеки, як правило, окупаються.

простий спосіб уникнути проблем з IE (з неіснуючим console.log)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.