Есть ли способ войти в консоль, не разбирая код под IE?
Я пытаюсь использовать console.log для внесения некоторого входа в javascript моей программы. Я заметил, однако, что, если консоль dev не открыта в IE, JS практически перестает работать, когда попадает на console.log. Это боль... это означает, что я должен удалить все записи, когда хочу сделать сборку.
Помимо очевидного:
function DoSafeConsoleLog( parameters )
{
if ( !$.browser.msie )
{
console.log( parameters );
}
}
Есть ли хороший способ зарегистрировать javascript, который является дружественным ко всем основным браузерам?
EDIT:
Хорошо, посмотрев на дубликат сообщения (oops), а также рассмотрев ответы здесь, мне нужно только проверить наличие консоли перед вызовом. Несмотря на то, что я не хочу иметь дополнительную разметку, я бы предпочел не встать на ноги будущих программистов, которые, возможно, захотят использовать Firebug Lite для отладки моего кода.
Ответы
Ответ 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]-->