2013-06-14 3 views
2

Я понимаю, что IE обрабатывает только консоль как объект, если окно отладки открыто. Если окно отладки не открыто, оно обрабатывает консоль как неопределенную.Консоль неопределенной проблемы в IE8

Именно поэтому я решил добавить если проверить так:

 if(console) 
      console.log('removing child'); 

Я понимаю, что если консоли неопределенна будет пропущен console.log. Однако в IE8 строка if (console) проходит, и я получаю неопределенное исключение, например, до console.log. Это странно.

Есть ли способ обойти это? и как вы кодируете консоль в своем коде, чтобы она работала на всех трех браузерах?

+0

консоли не поддерживают в IE8, удалить его работу в FF, Chrome, Safari, IE9 –

+1

@JamesDonnelly Вы должны снова прочитайте вопрос. Дело не в том, что консоль не определена в IE, а console.log не определена в IE8. –

ответ

8

Вы можете добавить следующее в статье, если:

if (console && console.log) { 
    console.log('removing child'); 
} 

Или написать бревенчатый оболочку вокруг console.log функции, как это.

window.log = function() { 
    if (this.console && this.console.log) { 
     this.console.log(Array.prototype.slice.call(arguments)); 
    } 
} 

Используйте это так:

log("This method is bulletproof", window, arguments"); 

А вот jsfiddle для этого: http://jsfiddle.net/joquery/4Ugvg/

+0

Это должно регистрировать массив, почему бы вам не применить разреженные аргументы к 'console.log'? – C5H8NNaO4

+0

+1 У меня проблема для IE8 и помогите мне быстро! – Mike

0

Попробуйте использовать это условие вместо этого, так как консоль не поддерживается, она будет вызывать неопределенное значение не false;

if(typeof console !== "undefined") { 
console.log('removing child'); 
} 

Однако для предотвращения того, чтобы обернуть все ваши лог statemnts консоли я бы просто поставить этот фрагмент в коде. Это остановит IE бросать любую ошибку

if(typeof console === "undefined") { 
    console = { 
     log: function() { }, 
     debug: function() { }, 
     ... 
    }; 
} 
4

Вы можете установить console.log в пустой функции

if(typeof console === "undefined") { 
    console = { 
     log : function() {} 
    } 
} 

Таким образом, вы должны беспокоиться только один раз.

1

Просто проверьте, если консоль существует

window.console && console.log('foo'); 
Смежные вопросы