diff options
Diffstat (limited to 'searx/static/plugins')
| -rw-r--r-- | searx/static/plugins/css/infinite_scroll.css | 3 | ||||
| -rw-r--r-- | searx/static/plugins/js/infinite_scroll.js | 46 | ||||
| -rw-r--r-- | searx/static/plugins/js/search_on_category_select.js | 2 | ||||
| -rw-r--r-- | searx/static/plugins/js/vim_hotkeys.js | 15 |
4 files changed, 50 insertions, 16 deletions
diff --git a/searx/static/plugins/css/infinite_scroll.css b/searx/static/plugins/css/infinite_scroll.css index 7e0ee20f5..07b9f6de9 100644 --- a/searx/static/plugins/css/infinite_scroll.css +++ b/searx/static/plugins/css/infinite_scroll.css @@ -14,3 +14,6 @@ border-radius: 50% !important; margin: 0 auto; } +#pagination button { + visibility: hidden; +} diff --git a/searx/static/plugins/js/infinite_scroll.js b/searx/static/plugins/js/infinite_scroll.js index 9cd582d7f..9930880e3 100644 --- a/searx/static/plugins/js/infinite_scroll.js +++ b/searx/static/plugins/js/infinite_scroll.js @@ -1,18 +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() { - if ($(document).height() - win.height() == win.scrollTop()) { - var formData = $('#pagination form:last').serialize(); - if (formData) { - $('#pagination').html('<div class="loading-spinner"></div>'); - $.post('./', formData, function (data) { - var body = $(data); - $('#pagination').remove(); - $('#main_results').append('<hr/>'); - $('#main_results').append(body.find('.result')); - $('#main_results').append(body.find('#pagination')); - }); - } + $("#pagination button").css("visibility", "hidden"); + if ($(document).height() - win.height() - win.scrollTop() < 150) { + loadNextPage(); } }); }); diff --git a/searx/static/plugins/js/search_on_category_select.js b/searx/static/plugins/js/search_on_category_select.js index a76fd1266..1c42d9e9e 100644 --- a/searx/static/plugins/js/search_on_category_select.js +++ b/searx/static/plugins/js/search_on_category_select.js @@ -10,7 +10,7 @@ $(document).ready(function() { } return false; }); - $('#time-range > option').click(function(e) { + $('#time-range').change(function(e) { if($('#q').val()) { $('#search_form').submit(); } diff --git a/searx/static/plugins/js/vim_hotkeys.js b/searx/static/plugins/js/vim_hotkeys.js index 61500d8f5..b0f265cb5 100644 --- a/searx/static/plugins/js/vim_hotkeys.js +++ b/searx/static/plugins/js/vim_hotkeys.js @@ -104,7 +104,7 @@ $(document).ready(function() { } }; - $(document).keyup(function(e) { + $(document).keydown(function(e) { // check for modifiers so we don't break browser's hotkeys if (vimKeys.hasOwnProperty(e.keyCode) && !e.ctrlKey @@ -118,12 +118,21 @@ $(document).ready(function() { } } else { if (e.target === document.body) { + e.preventDefault(); vimKeys[e.keyCode].fun(); } } } }); + function nextResult(current, direction) { + var next = current[direction](); + while (!next.is('.result') && next.length !== 0) { + next = next[direction](); + } + return next + } + function highlightResult(which) { return function() { var current = $('.result[data-vim-selected]'); @@ -156,13 +165,13 @@ $(document).ready(function() { } break; case 'down': - next = current.next('.result'); + next = nextResult(current, 'next'); if (next.length === 0) { next = $('.result:first'); } break; case 'up': - next = current.prev('.result'); + next = nextResult(current, 'prev'); if (next.length === 0) { next = $('.result:last'); } |