如何在没有要加载的页面时隐藏加载程序

时间:2017-07-07 13:48:44

标签: javascript jquery html css infinite-scroll

在我正在构建https://vase.ai/blog/的网站中,我使用无限滚动的脚本将多个页面组合成一个页面以进行滚动。

当没有要加载的页面时,我想隐藏加载程序(旋转的加载程序)。我认为以下代码可能能够帮助我检测错误(Failed to load resource: the server responded with a status of 404 (Not Found))并执行隐藏。但是,它不起作用。我错过了什么吗?

window.addEventListener('error', function(e) {
  $('loading').fadeOut()
}, true);

我用来加载更多的代码:

//implementing infinite scrolling
$grid.infinitescroll({
  // Pagination element that will be hidden
  navSelector: '.pagination',

  // Next page link
  nextSelector: '.pagination a',

  // Selector of items to retrieve
  itemSelector: '.grid-blog',
},

// Function called once the elements are retrieved
function(new_elts) {
  var elts = $(new_elts).css('opacity', 0);

  elts.animate({opacity: 1});
  $grid.packery('appended', elts);

  $('.target-resize').textfill({
    maxFontPixels: 36,
    changeLineHeight:false
  })

  $grid.packery({
    itemSelector: '.grid-blog',
    gutter: 20,

  })
});     

1 个答案:

答案 0 :(得分:1)

如果没有为了加载你的内容而进行http调用的代码,很难回答你的问题。但是,

1)您可能有错误,仍然有要加载的内容,在这种情况下,即使内容仍在加载,您的加载程序也会消失。

2)你应该有一些东西,你的网站需要加载。 一个url或任何东西的数组,当你加载了所有内容时,你可以使用它来隐藏你的加载器。

3)你应该在某个地方使用httpcalls来获取你的内容。这个函数应该有一个回调。在此回调中,您应该能够捕获错误,然后隐藏您的加载程序。

我无法通过您在示例中显示的代码数量向您提供更多信息。

编辑:查看代码后,您可以尝试:

// Function called once the elements are retrieved
function(new_elts) {
    if(!new_elts) {
        $('loading').fadeOut();
        return;
    }
...
}

我不认为这是正确的解决方案,你的插件应该有一个内置函数来停止调用新页面,但是因为我没有看到进行http调用的函数,或者任何数组/迭代器网址,很难帮助你。

您应该将此演示检查到:https://codepen.io/desandro/pen/rwwoGe