infinite_scroll.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. function hasScrollbar() {
  2. var root = document.compatMode=='BackCompat'? document.body : document.documentElement;
  3. return root.scrollHeight>root.clientHeight;
  4. }
  5. function loadNextPage() {
  6. var formData = $('#pagination form:last').serialize();
  7. if (formData) {
  8. $('#pagination').html('<div class="loading-spinner"></div>');
  9. $.ajax({
  10. type: "POST",
  11. url: $('#search_form').prop('action'),
  12. data: formData,
  13. dataType: 'html',
  14. success: function(data) {
  15. var body = $(data);
  16. $('#pagination').remove();
  17. $('#main_results').append('<hr/>');
  18. $('#main_results').append(body.find('.result'));
  19. $('#main_results').append(body.find('#pagination'));
  20. if(!hasScrollbar()) {
  21. loadNextPage();
  22. }
  23. }
  24. });
  25. }
  26. }
  27. $(document).ready(function() {
  28. var win = $(window);
  29. if(!hasScrollbar()) {
  30. loadNextPage();
  31. }
  32. win.scroll(function() {
  33. $("#pagination button").css("visibility", "hidden");
  34. if ($(document).height() - win.height() - win.scrollTop() < 150) {
  35. loadNextPage();
  36. }
  37. });
  38. });