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

Есть ли способ войти в консоль, не разбирая код под IE?

Я пытаюсь использовать console.log для внесения некоторого входа в javascript моей программы. Я заметил, однако, что, если консоль dev не открыта в IE, JS практически перестает работать, когда попадает на console.log. Это боль... это означает, что я должен удалить все записи, когда хочу сделать сборку.

Помимо очевидного:

function DoSafeConsoleLog( parameters )
{
    if ( !$.browser.msie )
    {
         console.log( parameters ); 
    }
}

Есть ли хороший способ зарегистрировать javascript, который является дружественным ко всем основным браузерам?

EDIT:

Хорошо, посмотрев на дубликат сообщения (oops), а также рассмотрев ответы здесь, мне нужно только проверить наличие консоли перед вызовом. Несмотря на то, что я не хочу иметь дополнительную разметку, я бы предпочел не встать на ноги будущих программистов, которые, возможно, захотят использовать Firebug Lite для отладки моего кода.

4b9b3361

Ответ 1

У IE есть своя консоль, и вы не захотите переопределять консоль, если используете firebug lite. Просто убедитесь, что консоль существует при вызове журнала:

if (window.console) console.log('foo bar baz', fizz, buzz);

Еще лучше, используйте && для ярлыка:

window.console && console.log('foo bar baz', fizz, buzz);

Ответ 2

Вы можете создать фальшивый console:

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

Ответ 3

Я сам использую этот фрагмент

if (! ('console' in window) ) {
var names = ['log', 'debug', 'info', 'warn', 'error', 'assert', 'dir', 'dirxml', 'group', 'groupEnd', 'time', 'timeEnd', 'count', 'trace', 'profile', 'profileEnd'];
window.console = {};
for (var i = 0; i < names.length; ++i) window.console[names[i]] = function() {};
}else {
/*if it exists but doesn't contain all the same methods....silly ie*/
var names = ['log', 'debug', 'info', 'warn', 'error', 'assert', 'dir', 'dirxml', 'group', 'groupEnd', 'time', 'timeEnd', 'count', 'trace', 'profile', 'profileEnd'];
for (var i = 0; i < names.length; ++i) if(!window.console[names[i]])window.console[names[i]] = function() {};
};

Ответ 4

function log(log){
  try{
     console.log( log); 
  }catch(err){}
}

Ответ 5

Я использую fauxconsole; Я немного изменил CSS, чтобы он выглядел лучше, но работает очень хорошо.

Ответ 6

Я решил это, используя описанную выше "поддельную консоль", чтобы предотвратить прерывание выполнения script. Он включен только для InternetExplorer < 10. Я включаю это в мой html-заголовок:

<!--[if lte IE 10]>
  <script> if (typeof console === "undefined") console = { log: function() { } }; </script>
<![endif]-->