NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Startpage.com Autopager // @namespace https://greasyfork.org/users/5174-jesuis-parapluie // @author jesuis-parapluie // // @description Autopager for startpage.com // // @include /^https?:\/\/(.+\.)?startpage\.com\/do\/.*$/ // // @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js // // @grant GM_xmlhttpRequest // @grant GM_getValue // @grant GM_setValue // // @version 0.1.5 // ==/UserScript== (function ($) { 'use strict'; /*jslint browser: true, regexp: true, newcap: true */ /*global $, jQuery, GM_xmlhttpRequest, GM_getValue, GM_setValue */ var autoPager = function () { var pos = $(document).height() - $('body').scrollTop() - $('html').scrollTop() - $(window).height(), form = $('#nextnavbar form'), resultsQuery = '#results, #video_results', data = "", breaker, nr; if (!$('#results_content').hasClass('trigger-block') && pos < 50) { $('#results_content').addClass('trigger-block'); breaker = $('<div>', { 'class': 'breaker', 'style': 'clear: both; line-height: 21px; text-align: center; margin: 10px; border: 1px solid; opacity: 0.7; font-style: italic;', 'html': 'loading page <span class="nr"></span> ..' }); breaker.css('width', $('div#first-result').width()); if ($("div[id*='pagenav'] .active").length !== 0) { // new design resultsQuery = '#bottom-result-container'; nr = parseInt($("div[id*='pagenav'] .active").last().text(), 10) + 1; $('#pagenavigation').before(breaker); } else { nr = parseInt($('#pagenavigation #pnform').html().match(/.* (\d+) .*/).pop(), 10) + 1; $(resultsQuery).last().append(breaker); } if (isNaN(nr) || $('#pagenavigation').find('a[id=' + nr + ']').length === 0) { breaker.remove(); return true; } breaker.find('.nr').text(nr); breaker.data('ipage', nr); form.find("input[type=\"hidden\"]").each(function () { data += "&" + $(this).attr('name') + "=" + $(this).attr('value'); }); data = data.substring(1); GM_xmlhttpRequest({ method: "POST", url: form.attr('action'), data: data, headers: { "Content-Type": "application/x-www-form-urlencoded" }, onload: function (response) { var startat, clickWrapper = function () { var obj = $('#pagenav' + $(this).attr('id')); if (obj.size() > 0) { $(document).scrollTop(obj.offset().top); } else { startat = $(this).attr('onclick').match(/\((\d+)\)/).pop(); obj = $('form[name=pnform]').last(); obj.find('#startat').attr('value', startat); obj.submit(); } return false; }, newPage = $(response.responseText), isEmpty = (newPage.find(resultsQuery).length === 0), isLastPage = (newPage.find("form[name='nextform']").length === 0); if (isEmpty) { return; } breaker.after(newPage.find(resultsQuery).html()); breaker.css('font-style', 'normal'); breaker.attr('id', 'pagenav' + breaker.find('span').text()); $('.classified').hide(); $('.classified').last().show(); if (!isLastPage) { if ($('#search_footer').size()) { $('#pagenavigation').html(newPage.find('#pagenavigation').html()); breaker.html($('#pagenavigation').clone(true).html()); } else { // new design breaker.html($('#pagenavigation').html()); $('#pagenavigation').remove(); $('#pagenavigation').html(newPage.find('#pagenavigation').html()); } $('#pagenavigation #nextnavbar a').attr('id', breaker.data('ipage') + 1); breaker.find('#nextnavbar a').attr('id', breaker.data('ipage') + 1); startat = $('#pagenavigation #nextnavbar input[name="startat"]').attr('value'); $('#pagenavigation #nextnavbar a').attr('onclick', 'mysubmit(' + startat + '); return false;'); breaker.find('#nextnavbar a').attr('onclick', 'mysubmit(' + startat + '); return false;'); $('#pagenavigation #prevnavbar a').attr('id', breaker.data('ipage') - 1); breaker.find('#prevnavbar a').attr('id', breaker.data('ipage') - 1); startat = $('#pagenavigation #prevnavbar input[name="startat"]').attr('value'); $('#pagenavigation #prevnavbar a').attr('onclick', 'mysubmit(' + startat + '); return false;'); breaker.find('#prevnavbar a').attr('onclick', 'mysubmit(' + startat + '); return false;'); $('#pagenavigation a').click(clickWrapper); breaker.find('a').click(clickWrapper); breaker.find('div').css('display', 'inline'); $('#pagenavigation div').css('display', 'inline'); breaker.find('span.active').css('padding', breaker.find('#nextnavbar a, #prevnavbar a').first().css('padding')); if ($('#pagenavigation').width() > $('div#first-result').width()) { breaker.css('width', $('#pagenavigation').width()); } $('#results_content').removeClass('trigger-block'); } else { breaker.remove(); $('#pagenavigation #jumpsbar a').each(function () { if (parseInt($(this).attr('id'), 10) >= nr) { $(this).remove(); } }); $('#pagenavigation #nextnavbar').remove(); } }, onerror: function () { $('.breaker').last().html('loading failed'); } }); } }; $(function () { var link = $('<a>', { 'class': 'autopager', 'style': 'cursor:pointer;font-weight:normal;text-align:left;', 'html': 'Autopager <span style="color:#D5402C;">off</span>' }).click(function () { if ($(this).find('span').text() === 'on') { $(this).find('span').text('off'); GM_setValue('SP-Autopager', false); $(document).off('scroll', autoPager); } else { $(this).find('span').text('on'); GM_setValue('SP-Autopager', true); $(document).on('scroll', autoPager); } }); if ($('#pagenavigation').length) { if ($('.navbar-header').length) { // new design $('#head_left').before(link); link.css('position', 'relative'); link.css('left', '640px'); link.css('top', '63px'); } else { $('#head_left').parent().append(link); } $('body').prepend($('<span>', {'id': 'pagenav1'})); if (GM_getValue('SP-Autopager', false)) { link.click(); } } }); }(jQuery));