// ==UserScript== // @name StartPage.com - Number Results // @namespace tag:r-a-y@gmx.com,2012:monkey // @description Number search results on StartPage.com // @match https://*.startpage.com/*/search* // @author r-a-y // @version 1.1.4 // @license GPL v3 // @downloadURL https://update.greasyfork.icu/scripts/2886/StartPagecom%20-%20Number%20Results.user.js // @updateURL https://update.greasyfork.icu/scripts/2886/StartPagecom%20-%20Number%20Results.meta.js // ==/UserScript== var results = document.querySelectorAll( 'li.search-item' ), hasPagination = true, pageNumber, pagination, multiple, next, resultsNumber; if ( results.length ) { hasPagination = false; } // Sometimes Startpage uses pagination. if ( hasPagination ) { results = document.querySelectorAll( '.w-gl__result-title h3' ); pageNumber = document.querySelector('.pagination .num--active').textContent; // If no pagination, calculate page number from prev/next links. } else { pagination = document.querySelectorAll('.pagination__link'); multiple = pagination[1].value; next = pagination[1].value; // We're on the last page. if ( multiple === '-1' ) { multiple = pagination[0].value; } // Get number of results. if ( multiple % 20 === 0 ) { resultsNumber = 20; } else { resultsNumber = 10; } // Calculate the current page number. if ( next === '-1' ) { pageNumber = multiple / resultsNumber + 1; } else { pageNumber = next / resultsNumber - 1; } } // DOM inject. for ( i = 0, len = results.length; i < len; ++i ) { newSpan = document.createElement( "span" ); newSpan.setAttribute( "style", "float:left; font-weight:600; font-size:1em; display:inline-block; margin-right:5px;" ); if ( hasPagination ) { newContent = document.createTextNode( ( ( pageNumber - 1 ) * len + i + 1 ) + ". "); } else { newContent = document.createTextNode( ( pageNumber * resultsNumber + i + 1 ) + ". "); } newSpan.appendChild( newContent ); results[i].insertBefore( newSpan, results[i].firstChild ); }