Есть ли способ войти в консоль, не нарушая код под IE? - PullRequest
13 голосов
/ 25 октября 2011

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

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

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

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

EDIT:

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

Ответы [ 6 ]

15 голосов
/ 25 октября 2011

Вы можете создать подделку console:

if (typeof console === "undefined")
    console = { log: function() { } };
9 голосов
/ 25 октября 2011

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

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

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

window.console && console.log('foo bar baz', fizz, buzz);
1 голос
/ 29 июня 2012

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

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() {};
};
0 голосов
/ 26 апреля 2017

Я решил это, используя описанную выше «фальшивую консоль», чтобы предотвратить прерывание выполнения скрипта.Он включен только для InternetExplorer <10. Я включил это в мою HTML-заголовок: </p>

<!--[if lte IE 10]>
  <script> if (typeof console === "undefined") console = { log: function() { } }; </script>
<![endif]-->
0 голосов
/ 16 ноября 2011

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

0 голосов
/ 25 октября 2011
function log(log){
  try{
     console.log( log); 
  }catch(err){}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...