Чи є консольний реєстратор для IE? Я намагаюся записати на консоль купу тестів / тверджень, але я не можу цього зробити в IE.
Чи є консольний реєстратор для IE? Я намагаюся записати на консоль купу тестів / тверджень, але я не можу цього зробити в IE.
Відповіді:
Ви можете отримати доступ до консолі сценарію 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()
.
ПРИМІТКА. Здається, спочатку потрібно запустити Інструменти для розробників, а потім оновити сторінку, щоб це працювало.
console.log()
порушиться. Завжди захищайте свої дзвінки зwindow.console && console.log('stuff');
Починаючи з версії 8, Internet Explorer має власну консоль, як і інші браузери. Однак якщо консоль не ввімкнена, console
об'єкт не існує і виклик до console.log
видасть помилку.
Іншим варіантом є використання log4javascript (повне розкриття: написане мною), у якого є своя консоль реєстрації, яка працює у всіх основних браузерах, включаючи IE> = 5, плюс обгортку для власної консолі браузера, що дозволяє уникнути невизначення console
.
якщо ви в кінцевому підсумку випускаєте console.log()
команди для виробництва, вам потрібно ввести якесь виправлення для IE - оскільки console
воно визначається лише в F12
режимі налагодження.
if (typeof console == "undefined") {
this.console = { log: function (msg) { alert(msg); } };
}
[очевидно видалити попередження (мсг); заява, як тільки ви перевірите, чи працює]
Дивіться також "консоль" - невизначена помилка Internet Explorer для інших рішень та додаткових відомостей
Існує Firebug Lite, який дає багато функцій Firebug в IE.
У своїй книзі "Секрети 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, " "));
}
}
}
цьому фрагменті немає. :)
Для підтримки IE8 або консолі, обмеженої console.log (без налагодження, трасування, ...), ви можете зробити наступне:
Якщо консоль АБО console.log undefined: Створіть фіктивні функції для функцій консолі (слід, налагодження, журнал, ...)
window.console = {
debug : function() {}, ...};
В іншому випадку, якщо визначено console.log (IE8) І console.debug (будь-який інший) не визначено: перенаправити всі функції реєстрації на console.log, це дозволяє зберігати ці журнали!
window.console = {
debug : window.console.log, ...};
Не впевнений у підтримці затвердження у різних версіях IE, але будь-які пропозиції вітаються.
Ви можете використовувати перехресну браузерну обгортку: https://github.com/MichaelZelensky/log.js
Для старшої версії IE (до IE8) не просто бачити консольний запис у панелі інструментів розробника IE, витративши години на дослідження та спробу багатьох різних рішень, нарешті, наступна панель інструментів для мене чудовий інструмент:
Основна перевага цього - надання консолі для IE6 або IE7, так що ви можете побачити, що таке помилка (у журналі консолі)
Я завжди робив щось подібне:
var log = (function () {
try {
return console.log;
}
catch (e) {
return function () {};
}
}());
і з цього моменту просто завжди використовуйте журнал (...), не будьте занадто фантазійним за допомогою консолі. [застереження | помилка | тощо], просто тримайте це просто. Я, як правило, віддаю перевагу простому рішенню, тоді модні зовнішні бібліотеки, як правило, окупаються.
простий спосіб уникнути проблем з IE (з неіснуючим console.log)
console.log()
працює лише тоді, коли відкритий інструмент розробки IE (так IE є хитрим). дивіться stackoverflow.com/questions/7742781/…