Browse Source

[fix] load new page with infinite scroll if there is no scrollbar - fixes #759

Adam Tauber 5 years ago
parent
commit
65cae85735
1 changed files with 33 additions and 17 deletions
  1. 33 17
      searx/static/plugins/js/infinite_scroll.js

+ 33 - 17
searx/static/plugins/js/infinite_scroll.js

@@ -1,24 +1,40 @@
+function hasScrollbar() {
+    var root = document.compatMode=='BackCompat'? document.body : document.documentElement;
+    return root.scrollHeight>root.clientHeight;
+}
+
+function loadNextPage() {
+    var formData = $('#pagination form:last').serialize();
+    if (formData) {
+        $('#pagination').html('<div class="loading-spinner"></div>');
+        $.ajax({
+            type: "POST",
+            url: './',
+            data: formData,
+            dataType: 'html',
+            success: function(data) {
+                var body = $(data);
+                $('#pagination').remove();
+                $('#main_results').append('<hr/>');
+                $('#main_results').append(body.find('.result'));
+                $('#main_results').append(body.find('#pagination'));
+                if(!hasScrollbar()) {
+                    loadNextPage();
+                }
+            }
+        });
+    }
+}
+
 $(document).ready(function() {
     var win = $(window);
+    if(!hasScrollbar()) {
+        loadNextPage();
+    }
     win.scroll(function() {
+        $("#pagination button").css("visibility", "hidden");
         if ($(document).height() - win.height() - win.scrollTop() < 150) {
-            var formData = $('#pagination form:last').serialize();
-            if (formData) {
-                $('#pagination').html('<div class="loading-spinner"></div>');
-                $.ajax({
-                    type: "POST",
-                    url: './',
-                    data: formData,
-                    dataType: 'html',
-                    success: function(data) {
-                        var body = $(data);
-                        $('#pagination').remove();
-                        $('#main_results').append('<hr/>');
-                        $('#main_results').append(body.find('.result'));
-                        $('#main_results').append(body.find('#pagination'));
-                    }
-                });
-            }
+            loadNextPage();
         }
     });
 });