Ответ 1
Некоторые браузеры известны тем, что поддерживают только подмножество window.console или даже совсем не работают. Некоторые браузеры поддерживают только console.info, а другие поддерживают информацию, отладочную информацию, журнал, предупреждение, ошибку и, возможно, другие.
В файле jquery.infinitescroll.js, на строке 171 или рядом с ней, вы найдете следующий код:
// Console log wrapper
_debug: function infscr_debug() {
if (this.options && this.options.debug) {
return window.console && console.log.call(console, arguments);
}
},
В Internet Explorer консольный метод иногда не определен, если не включены функции Developer Tools и/или Script Debugger; таким образом, веб-приложение, которое отлично работает на компьютере разработчика, может потерпеть неудачу при использовании на рабочем компьютере, где средства разработчика и/или отладчик Script отключены.
Ваш первый инстинкт как разработчик может состоять в том, чтобы удалить инструкции консоли из вашего кода - или код любых библиотек, которые вы используете, используя console.log. Хуже того, у вас может возникнуть соблазн избегать консольных заявлений algoether и вместо этого использовать предупреждения.
Так как инструкции console.log очень ценны для процесса устранения неполадок и отладки, один метод, который вы можете использовать для обеспечения того, чтобы инструкции консоли не мешали производственному коду, заключается в том, чтобы включить определение по умолчанию для объекта консоли на всех ваших где эта проблема возникает:
Этот JavaScript, включенный в раздел <head>
на ваших страницах, определит window.console и будет использоваться как пустые функции, если он обнаружит, что они не были определены.
<script type="text/javascript">
// override loggers to avoid throwing errors
if(window.console == null || window.console == undefined || !window.console) {
console = { log: function() {}, info: function() {}, warn: function() {}, error: function() {}, trace: function() {}, debug: function() {} };
//var fbscript = document.createElement("script");
//fbscript.src = "https://getfirebug.com/firebug-lite-beta.js";
//fbscript.setAttribute("type","text/javascript");
//document.getElementsByTagName("head")[0].appendChild(fbscript);
} else if(!console.debug) {
console.debug = function(text) { if(console.log) console.log("D: "+text); };
}
</script>
Кроме того, есть 4 строки комментария JavaScript, которые при раскомментировании загружают Firebug Lite в любом браузере, с которым вы работаете, если window.console имеет значение null или не определено.
В качестве альтернативы вы можете проверить, не включили ли вы отладку в разделе параметров самого плагина прокрутки jQuery:
debug : true,
// enable debug messaging ( to console.log )
В идеале это, вероятно, было бы лучшим решением, но я предпочитаю первое, поскольку я знаю, что это помогает мне избежать ловушки не тестирования в браузерах без отладчиков.
Подробнее см. документацию jQuery Ininite Scroll, в частности раздел параметров.