При каких обстоятельствах window.console.log
определяется в Internet Explorer 9?
Даже когда window.console.log
это определено window.console.log.apply
и window.console.log.call
не определено. Почему это?
[Связанный вопрос для IE8: что случилось с console.log в IE8? .]
javascript
logging
internet-explorer-9
mloughran
источник
источник
Ответы:
В Internet Explorer 9 (и 8)
console
объект открывается только тогда, когда инструменты разработчика открыты для определенной вкладки. Если вы скрываете окно инструментов разработчика для этой вкладки,console
объект остается открытым для каждой страницы, на которую вы переходите. Если вы открываете новую вкладку, вы также должны открыть инструменты разработчика для этой вкладки, чтобыconsole
объект был доступен.console
Объект не является частью любого стандарта и является продолжением к модели объекта документа. Как и другие объекты DOM, он считается хост-объектом и не обязан наследоватьсяObject
, равно как и его методыFunction
, как это делают нативные функции и объекты ECMAScript. Это причинаapply
иcall
не определены в этих методах. В IE 9 большинство объектов DOM были улучшены для наследования от собственных типов ECMAScript. Поскольку инструменты разработчика считаются расширением IE (хотя и встроенным расширением), они явно не получили тех же улучшений, что и остальная часть DOM.Для чего бы это ни стоило, вы все равно можете использовать некоторые
Function.prototype
методы вconsole
методах с небольшим количествомbind()
волшебства:источник
console
объекту Firebug .Простое решение этой проблемы console.log - определить следующее в начале вашего кода JS:
Это работает для меня во всех браузерах. Это создает фиктивную функцию для console.log, когда отладчик не активен. Когда отладчик активен, метод console.log определен и выполняется нормально.
источник
Я знаю, что это очень старый вопрос, но чувствую, что это добавляет ценную альтернативу решения проблемы с консолью. Поместите следующий код перед любым вызовом консоли. * (Так что ваш самый первый скрипт).
Ссылка:
https://github.com/h5bp/html5-boilerplate/blob/v5.0.0/dist/js/plugins.js
источник
console.log определяется только когда консоль открыта. Если вы хотите проверить это в своем коде, убедитесь, что вы проверите это в свойстве окна
это вызывает исключение в IE9 и не будет работать правильно. Не делай этого
источник
Прочитав статью из комментария Марка Клиамента выше, я изменил свою универсальную кросс-браузерную функцию console.log:
источник
Function.prototype.apply.call(console.log, console, arguments);
Я хотел бы отметить, что IE9 не вызывает ошибку, если вы используете console.log с инструментами разработчика, закрытыми на всех версиях Windows. На XP это так, а на Windows 7 - нет. Так что, если вы вообще отказались от поддержки WinXP, вы можете напрямую использовать console.log.
источник
Как насчет...
источник