Подтвердить что ты не робот

Каков правильный способ записи в консоль script (console.log) в IE?

Я имею эту замену console.log, определенную в document.ready():

$(document).ready(function(){
  console.log("doc ready");
  if(typeof console === "undefined"){
    console = { log: function() { } };
  }
}

Я думал, что IE должен иметь эту функцию, но, когда я включаю вызов выше

  console.log("doc ready");

вывод появляется в консоли Firefox, но не в IE - на самом деле выполнение IE script полностью прерывается в данный момент.

Каков правильный способ записи на консоль в IE?

4b9b3361

Ответ 1

Выполнение script -execution происходит из-за неправильного порядка инструкций, это может быть лучше:

$(document).ready(function(){

  if(typeof console === "undefined"){
    console = { log: function() { } };
  }
  console.log("doc ready");
}

Если вы впервые открываете консоль перед проверкой ее существования (и создаете ее, если нет), это приводит к ошибке.

Ответ 2

IE6/7 по умолчанию не имеет консоли.

На самом деле, Firefox также не поддерживается плагином Firebug; если вы используете копию Firefox без Firebug, то вы получите ошибки, пытаясь вызвать console точно так же, как с IE.

В IE8/9 есть консоль.

Chrome и Safari имеют встроенный объект консоли, но не рассчитывают на то, что он работает точно так же, как Firebug или IE8.

Обратите внимание, что во всех браузерах объект консоли не может быть создан, если окно отладки не открыто. Это означает, что ваш код с вызовом console.log может выйти из строя в любом браузере, а не только в IE.

В вашем примере вы по существу создаете фиктивный объект console, если он не существует, что явно предназначено для предотвращения сбоев браузеров без консоли, если вы вызываете console.log(). Но вы вызываете console.log() до того, как этот код будет запущен, поэтому эти браузеры без консоли будут разбиваться на эту строку. Поэтому вы должны переместить строку console.log("doc ready"); вниз, чтобы она появилась после бит, который определяет, существует ли console.

Если вы хотите, чтобы консоль существовала для IE, есть версия Firebug под названием Firebug Lite, которая может быть запущена в любом браузере. Если вы запустите это, он создаст объект console.

Однако обратите внимание, что он может запускаться только после загрузки страницы, поэтому вы никогда не сможете заставить его показывать консольные сообщения в функции готовности документа. Кроме того, он может не создать консольный объект, если он уже существует, поэтому код, который у вас есть в документе, готовом для создания фиктивного объекта консоли, может помешать работе Firebug Lite правильно работать.

Наконец, при использовании консоли для фантастики для целей отладки, убедитесь, что вы никогда не отправляете живой код с вызовами console.log, даже если вы планируете использовать их только для целей отладки позже. Как вы уже видели, они могут заставить браузер прекратить выполнение кода, если у него нет объекта консоли, и будет много живых пользователей, у которых его нет, поэтому остерегайтесь создавать проблемы для живых пользователей: лучше всего, чтобы вы всегда удаляли все свои звонки на консоль перед отправкой кода.

Ответ 3

Вот что я использую для перехода на другой ресурс firebug lite, если консоль недоступна. Это гарантирует, что вы получите консоль некоторого описания, хотя все они работают немного по-другому, поэтому будьте осторожны.

function attachConsole(force) {
  if(force || typeof console === "undefined"){
    var head= document.getElementsByTagName('head')[0];
    var script= document.createElement('script');
    script.type= 'text/javascript';
    script.src= 'http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js';
    head.appendChild(script);
    return true;
  }
return false;
}

Ответ 4

Консоль

предназначена для firebug.

Вам нужно будет установить firebug lite, чтобы включить запись в консоль в IE.