Проблемы с бесконечным прокруткой и кладкой jQuery

Я пытаюсь создать тему tumblr, и я использую кладки и бесконечные плагины прокрутки для jquery. кладка работает отлично. однако я не могу заставить бесконечный свиток работать вообще. здесь мой код jQuery:

<script type="text/javascript" src="../jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="../masonry.js"></script>
<script type="text/javascript" src="../jquery.infinitescroll.js"></script>
<script type="text/javascript">
$('document').ready(function(){
$('#content').imagesLoaded(function(){
$('#content').masonry({
itemSelector: '.post',
columnWidth: 260});
});
$('#content').infinitescroll({
    navSelector  : '#nav',
    nextSelector : '#nav a',
    itemSelector : '#content div.post',          
    },
    function( newElements ) {
    var $newElems = $( newElements );
    $('#content').masonry( 'appended', $newElems, function(){$newElems.fadeIn('slow');}   );
  });
});
</script>

и это мой HTML:

 <div id="content">
   {block:Posts}
   {block:Photo}
<div class="post">
<img src="{PhotoURL-250}" width="250" />
</div>
   {/block:Photo}
   {/block:Posts}
 {block:Pagination}
<div id="nav">{block:NextPage}<a href="{NextPage}"></a>{/block:NextPage}</div>
 {/block:Pagination}

Любая помощь приветствуется. спасибо заранее.

* Я также хотел бы отметить, что я сократил URL-адреса в js файлах специально, чтобы сделать сообщение лучше, в моей фактической теме правильные URL-адреса.

Это то, что консоль отображается после добавления отладки (честно говоря, я не знаю, что это значит, но, надеюсь, это помогает)

Testing console
["determinePath", 
Array[2]
0: "/page/"
1: ""
length: 2
__proto__: Array[0]
] jquery.infinitescroll.js:171
["Binding", "bind"] jquery.infinitescroll.js:171
["math:", 77, 644] jquery.infinitescroll.js:171
["heading into ajax", 
Array[2]
0: "/page/"
1: ""
length: 2
__proto__: Array[0]
] jquery.infinitescroll.js:171
["Using HTML via .load() method"] jquery.infinitescroll.js:171
["contentSelector", 
<div id=​"content" style=​"position:​ relative;​ height:​ 689px;​ " class=​"masonry">​…​</div>​
] jquery.infinitescroll.js:171
["math:", 292, 644] jquery.infinitescroll.js:171
["heading into ajax", 
Array[2]
] jquery.infinitescroll.js:171
["Using HTML via .load() method"] jquery.infinitescroll.js:171
["Error", "end"] jquery.infinitescroll.js:171
["Binding", "unbind"] 

Ответы

Ответ 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, в частности раздел параметров.