StartPage.com - Number Results

Number search results on StartPage.com

  1. // ==UserScript==
  2. // @name StartPage.com - Number Results
  3. // @namespace tag:r-a-y@gmx.com,2012:monkey
  4. // @description Number search results on StartPage.com
  5. // @match https://*.startpage.com/*/search*
  6. // @author r-a-y
  7. // @version 1.1.4
  8. // @license GPL v3
  9. // ==/UserScript==
  10.  
  11. var results = document.querySelectorAll( 'li.search-item' ), hasPagination = true, pageNumber,
  12. pagination, multiple, next, resultsNumber;
  13.  
  14. if ( results.length ) {
  15. hasPagination = false;
  16. }
  17.  
  18. // Sometimes Startpage uses pagination.
  19. if ( hasPagination ) {
  20. results = document.querySelectorAll( '.w-gl__result-title h3' );
  21. pageNumber = document.querySelector('.pagination .num--active').textContent;
  22.  
  23. // If no pagination, calculate page number from prev/next links.
  24. } else {
  25. pagination = document.querySelectorAll('.pagination__link');
  26. multiple = pagination[1].value;
  27. next = pagination[1].value;
  28.  
  29. // We're on the last page.
  30. if ( multiple === '-1' ) {
  31. multiple = pagination[0].value;
  32. }
  33.  
  34. // Get number of results.
  35. if ( multiple % 20 === 0 ) {
  36. resultsNumber = 20;
  37. } else {
  38. resultsNumber = 10;
  39. }
  40.  
  41. // Calculate the current page number.
  42. if ( next === '-1' ) {
  43. pageNumber = multiple / resultsNumber + 1;
  44. } else {
  45. pageNumber = next / resultsNumber - 1;
  46. }
  47. }
  48.  
  49. // DOM inject.
  50. for ( i = 0, len = results.length; i < len; ++i ) {
  51. newSpan = document.createElement( "span" );
  52. newSpan.setAttribute( "style", "float:left; font-weight:600; font-size:1em; display:inline-block; margin-right:5px;" );
  53.  
  54. if ( hasPagination ) {
  55. newContent = document.createTextNode( ( ( pageNumber - 1 ) * len + i + 1 ) + ". ");
  56. } else {
  57. newContent = document.createTextNode( ( pageNumber * resultsNumber + i + 1 ) + ". ");
  58. }
  59. newSpan.appendChild( newContent );
  60.  
  61. results[i].insertBefore( newSpan, results[i].firstChild );
  62. }